4. 存储介质与分层设计

数据库工作负载的性能上限,往往并不取决于存储阵列的控制器数量或前端端口带宽,而是取决于数据最终落在哪一类介质上。Dell企业存储(如PowerStore、PowerVault ME5、PowerMax等)支持多种介质类型混插,并通过分层策略把不同"温度"的数据放到不同介质上。理解NVMe SSD、SAS SSD、NL-SAS和QLC SSD在延迟、IOPS、耐久度、容量成本上的差异,是数据库存储设计的第一步。

四类介质的本质差异

这四类介质虽然都叫"SSD"或"磁盘",但底层技术路线完全不同。NVMe SSD走PCIe通道,使用原生NVMe协议,命令队列深度可达64K,单盘随机读延迟通常在80~120微秒量级;SAS SSD走SAS通道,使用SCSI协议栈,队列深度受限于SAS协议,延迟一般在150~250微秒;NL-SAS本质是7200转机械盘配SAS接口,随机IOPS通常只有150~200,延迟在毫秒级;QLC SSD使用四层单元闪存,读取性能接近TLC SSD,但写入放大明显,持续写入时延迟会显著上升,耐久度(DWPD)通常只有0.2~1。

对数据库而言,最关键的三个指标是:随机读IOPS、写延迟和耐久度。OLTP数据库的redo日志写入是顺序小IO,对写延迟极其敏感;数据文件随机读是典型的高IOPS场景;而归档、备份、历史表扫描则是大块顺序读,对带宽敏感但对延迟不敏感。这决定了不同介质在数据库中的合理定位。

数据库存储分层:介质特性与数据放置 数据库数据温度 热数据 redo日志 / 索引 高频DML表 温数据 近期业务表 中等频率查询 冷数据 历史表 / 归档 低频扫描 备份/暂存 备份集 / 导出文件 ETL中间数据 存储介质特性对比 NVMe SSD 接口:PCIe 4.0/5.0 · 协议:NVMe · 队列深度:64K 随机读延迟:80~120μs · 随机IOPS:50万~150万/盘 · DWPD:1~3 定位:热数据 / redo日志 SAS SSD 接口:SAS 12Gb/s · 协议:SCSI · 队列深度:受SAS限制 随机读延迟:150~250μs · 随机IOPS:20万~50万/盘 · DWPD:1~5 定位:温数据 / 数据文件 NL-SAS(7200转机械盘) 接口:SAS 12Gb/s · 转速:7200 RPM · 寻道时间:毫秒级 随机读延迟:5~15ms · 随机IOPS:150~200/盘 · 顺序带宽:200MB/s+ 定位:冷数据 / 归档 QLC SSD 接口:SAS/NVMe · 单元:4bit/cell · 读性能接近TLC,写放大明显 随机读延迟:100~200μs · 持续写延迟:显著上升 · DWPD:0.2~1 定位:备份 / 暂存 / 只读副本 注:以上参数为典型量级示例,实际值因型号、负载模式、阵列配置而异

介质选择对数据库性能的实际影响

以Oracle OLTP场景为例:假设数据库有100GB热数据、500GB温数据、2TB冷数据。如果全部放在NL-SAS上,随机读IOPS上限约200×盘数,假设8块盘做RAID10,理论随机读IOPS约800,延迟5~15ms,redo日志写入延迟会直接拖慢事务提交。如果把redo日志和热数据放到NVMe SSD,温数据放SAS SSD,冷数据放NL-SAS,则redo写入延迟降到100μs级,热数据随机读IOPS提升到50万以上,事务吞吐量可能提升5~10倍。

SQL Server场景类似:tempdb是典型的高写入负载,建议放在NVMe SSD或高耐久SAS SSD上;数据文件按访问频率分层;日志文件必须与数据文件分离,且优先使用低延迟介质。Dell PowerStore的"卷到介质"映射策略允许按卷指定性能层,PowerVault ME5则通过磁盘组和池化实现类似效果。

QLC SSD的适用边界

QLC SSD最大的诱惑是容量成本。同容量下QLC比TLC便宜30%~50%,适合备份、归档、只读副本、ETL中间数据等"写一次读多次"的场景。但QLC有两个硬伤:一是持续写入时SLC缓存耗尽后写入速度可能降到100MB/s以下,延迟从微秒级跳到毫秒级;二是DWPD低,频繁写入会快速消耗寿命。因此QLC不适合redo日志、tempdb、高频DML表。如果必须用QLC承载数据库,应确保写入量可控,并监控介质磨损指标。

在Dell PowerStore中,可以通过"卷性能策略"把不同卷绑定到不同性能层;在PowerVault ME5中,可以通过创建不同磁盘组(SSD组、SAS组、NL-SAS组)并手动分配卷来实现分层。分层不是一次性的,应结合数据库访问模式变化定期调整。

分层设计的实操判断依据

实际设计中,可以用以下参数作为判断依据:单盘随机读IOPS、单盘写延迟、DWPD、每GB成本、顺序带宽。对数据库而言,优先级排序通常是:写延迟 > 随机读IOPS > 耐久度 > 顺序带宽 > 每GB成本。redo日志和tempdb对写延迟最敏感,应放在NVMe SSD或高耐久SAS SSD;数据文件按访问频率分层;备份和归档可以放NL-SAS或QLC。

一个可参考的配置示例:假设某OLTP数据库日均事务量50万,redo日志写入量约20GB/天,热数据100GB,温数据500GB,冷数据2TB。建议配置:2块NVMe SSD做RAID1放redo日志;4块NVMe SSD做RAID10放热数据;6块SAS SSD做RAID10放温数据;4块NL-SAS做RAID10放冷数据。这样在保证性能的同时,把成本控制在合理范围。实际配置需根据阵列型号、盘位数量、预算和性能目标调整。

不要把QLC SSD用于redo日志或tempdb。QLC的持续写入延迟和耐久度都不适合高频小写入场景,可能导致事务提交超时或介质提前磨损。如果预算有限,至少把redo日志放在SAS SSD上。

最后需要强调:介质分层不是孤立的,它必须与RAID级别、阵列缓存策略、前端端口配置协同考虑。NVMe SSD如果被RAID5写惩罚拖累,性能优势会大打折扣;SAS SSD如果缓存命中率低,延迟也会上升。分层设计的核心是让每一类数据落在最合适的介质上,同时保证整体配置没有短板。