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场景;而归档、备份、历史表扫描则是大块顺序读,对带宽敏感但对延迟不敏感。这决定了不同介质在数据库中的合理定位。
介质选择对数据库性能的实际影响
以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承载数据库,应确保写入量可控,并监控介质磨损指标。
分层设计的实操判断依据
实际设计中,可以用以下参数作为判断依据:单盘随机读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放冷数据。这样在保证性能的同时,把成本控制在合理范围。实际配置需根据阵列型号、盘位数量、预算和性能目标调整。
最后需要强调:介质分层不是孤立的,它必须与RAID级别、阵列缓存策略、前端端口配置协同考虑。NVMe SSD如果被RAID5写惩罚拖累,性能优势会大打折扣;SAS SSD如果缓存命中率低,延迟也会上升。分层设计的核心是让每一类数据落在最合适的介质上,同时保证整体配置没有短板。