4. 存储容量与性能规划方法

数据库存储规划的核心,是把“未来某一天数据库会变成多大、需要多快”翻译成今天可采购、可配置、可验证的容量与性能参数。它包含两条并行主线:容量线回答“要留多少空间”,性能线回答“要留多少 IOPS、带宽和时延余量”。两条线都必须基于增长趋势、备份保留、快照开销和性能余量四个输入,而不是按当前占用简单乘一个系数。

一、容量规划:从当前占用到可分配容量

容量规划的第一步是建立“逻辑数据量 → 物理占用 → 可分配容量”的换算链。以某 OLTP 数据库为例(以下均为教学示例参数):当前数据文件逻辑大小 8 TB,索引 2 TB,合计逻辑数据 10 TB。Pure Storage 阵列启用数据缩减后,实测缩减比约 3:1,则物理占用约 3.3 TB。但规划不能只看这一层,还要叠加三类开销。

增长趋势:按过去 12 个月月度采样,数据量从 6.4 TB 增至 10 TB,月均增长约 0.3 TB,年化增长率约 56%。规划周期取 24 个月,则 24 个月后逻辑数据约 10 + 0.3×24 = 17.2 TB。若增长率不稳定,应取近 6 个月与 12 个月增长率的较大值,避免低估。

备份保留:若采用阵列快照做本地备份,保留 7 天、每天 2 次,共 14 个快照。Pure Storage 快照为元数据级指针,初始几乎不占空间,但源卷数据变更后,旧快照指向的旧数据块需保留。按日均变更率 8% 估算,14 个快照的额外占用约为 17.2 TB × 8% × 14 ≈ 19.3 TB(逻辑口径),这是最容易被忽略的部分。

快照与克隆开销:若还用于测试库克隆、DevOps 环境,每个克隆按 20% 数据量估算,3 个克隆约 17.2 × 20% × 3 ≈ 10.3 TB。加上快照,逻辑侧总需求约 17.2 + 19.3 + 10.3 ≈ 46.8 TB。再按 3:1 缩减比折算物理占用约 15.6 TB。

性能余量与安全水位:阵列不应长期运行在 85% 以上容量,否则快照、重建、扩容都会受限。因此可分配容量 = 物理需求 ÷ 目标水位。取 75% 水位,则需配置 15.6 ÷ 0.75 ≈ 20.8 TB,向上取整为 24 TB 可用容量。这个数字才是采购和卷配置的依据。

容量规划换算链:逻辑数据 → 物理占用 → 可分配容量 逻辑数据量 数据 8 TB + 索引 2 TB = 10 TB 月增 0.3 TB,24 月后 17.2 TB 叠加开销 快照 14 个 × 8% ≈ 19.3 TB 克隆 3 个 × 20% ≈ 10.3 TB 逻辑总需求 ≈ 46.8 TB 物理占用 46.8 TB ÷ 3:1 ≈ 15.6 TB 缩减比按实测取值 可分配容量 15.6 ÷ 75% ≈ 20.8 TB 取整 24 TB 性能估算模型:IOPS、带宽、时延与余量 IOPS 估算 峰值 TPS 8000 × 每事务 6 IO = 48,000 IOPS 读:写 = 7:3 读 33,600 / 写 14,400 余量 30% → 目标 62,400 IOPS 带宽估算 平均 IO 大小 16 KB 48,000 × 16 KB ≈ 750 MB/s 备份窗口 4 h 内完成 8 TB 需 ≥ 570 MB/s 持续带宽 取两者较大值并留余量 时延目标 OLTP 读 P95 < 1 ms 写 P95 < 2 ms 混合负载 P99 < 5 ms 时延超标先查队列深度 与热点卷分布

二、性能估算:IOPS、带宽与时延的联动

性能规划不能只算一个 IOPS 数字。以同一 OLTP 示例为例:峰值 TPS 8000,每个事务平均产生 6 次物理 IO,则峰值 IOPS = 48,000。读写比 7:3,读 IOPS 33,600、写 IOPS 14,400。若平均 IO 大小 16 KB,则峰值带宽约 48,000 × 16 KB ≈ 750 MB/s。这两个数字分别对应阵列的 IOPS 能力和前端端口带宽能力,必须同时满足。

时延是第三个约束。Pure Storage 全闪阵列在正常负载下读时延通常在亚毫秒级,但规划时应设定明确目标:OLTP 读 P95 < 1 ms、写 P95 < 2 ms、混合 P99 < 5 ms。时延不是独立算出来的,而是通过“目标时延 → 可承受队列深度 → 所需 IOPS”反推。若实测时延随负载上升明显,说明已接近阵列或卷的 IOPS 上限,此时加容量不一定能解决,需要检查热点卷分布、快照密度和主机多路径配置。

性能余量的取值需要区分场景:核心 OLTP 建议预留 30%~40%,因为故障切换、批量任务、备份会叠加负载;报表与分析库可预留 20%~30%;开发测试环境可放宽到 10%~20%。余量不是浪费,而是吸收突发和故障域切换的缓冲。

三、把容量与性能合并成一张规划表

实际规划时,建议把上述参数整理成可复核的表格,逐项标注来源和假设。以下为教学示例,数值均为合理假设,不代表任何真实环境实测结果。

规划项 示例取值 来源/假设 判断依据
当前逻辑数据10 TB数据 8 TB + 索引 2 TB数据库统计信息
月均增长0.3 TB近 12 个月采样取 6/12 月较大值
规划周期24 个月业务规划假设覆盖采购周期
快照开销≈19.3 TB14 快照 × 8% 变更率按逻辑口径估算
克隆开销≈10.3 TB3 克隆 × 20%按测试环境需求
缩减比3:1实测或同负载参考不按厂商标称上限
目标水位75%安全运行水位避免快照受限
峰值 IOPS48,0008000 TPS × 6 IO业务峰值采样
峰值带宽≈750 MB/s48,000 × 16 KB与备份带宽取大
时延目标读 P95 < 1 msOLTP 服务等级实测验证
性能余量30%核心库建议值吸收突发与切换
规划完成后,至少每季度用实际增长率和实测时延回填一次表格。若实际月增长连续两个月超过假设值 20%,或 P95 时延连续一周超过目标,应触发扩容或负载再平衡评估,而不是等到容量水位告警才处理。

容量与性能规划的本质,是把不确定性显式化:增长趋势用采样区间约束,备份与快照用变更率约束,性能用余量和时延目标约束。只有每个数字都能追溯到来源和假设,规划结果才可复核、可调整,也才能在数据库真正增长时提前而不是被动地做出响应。