更新时间:2026-08-06 GMT+08:00
分享

需求目标

业务痛点

  • 性能下降:当数据访问规模大于缓冲区大小时,会导致缓冲区命中率下降,进而导致缓冲区频繁的页面置换操作,I/O压力激增,如图1所示。当I/O压力超过存储介质的I/O带宽或者IOPS最大上限时,就会出现I/O瓶颈,导致数据库性能受限。另外,I/O带宽或者IOPS过低也容易导致性能下降。
    图1 访问数据大于缓冲区大小导致命中率低出现I/O瓶颈
  • 性能抖动:当前数据库内核中的刷脏策略采用的是脏页预刷机制,即脏页不是有业务线程需要时才临时淘汰,而是由后台刷脏线程提前完成刷脏操作。后台扫描线程通过周期扫描将刷脏完成的页面加入候选列表,业务线程可直接从中获取可用缓冲区。此设计核心优势是将业务线程淘汰脏页的I/O延迟转移至后台线程预执行,有效消除业务路径的I/O等待,提升整体性能。然而在大容量场景出现I/O瓶颈时,预刷脏产生的候选页面无法满足业务需求,导致业务线程被迫主动淘汰脏页,引发性能下降。由于预刷脏扫描干净页面放入候选列表采用周期性执行机制,数据库性能呈现规律性波动:当候选列表批量填充时性能冲高,待页面消耗殆尽时性能骤降,形成周期性抖动循环,如图2所示:
    图2 TPCC大容量测试实时性能抖动细节图

I/O过载不仅会导致数据库性能劣化,也会导致操作系统内核调度劣化。当I/O过载时,I/O争抢加剧、延迟显著增加,操作系统内核中的native spin lock自旋锁因空转而占用更多CPU资源,导致I/O性能劣化。这种情况下,I/O资源利用效率反而会下降,因此构建防过载能力刻不容缓。

在大容量场景下,随着数据量不断增长,除了上述提到的性能下降和性能抖动问题之外,还会因为数据增加而带来高可维的问题,主要体现在主备库构建和备份恢复所需时间也将随着数据增加而大幅延长。在承诺的40TB最大数据场景下,大容量规格会超过允许的RTO规格,比如容灾最大8h的规格。下面将介绍大容量场景下的优化措施来解决上述问题。

目标指标

  • 高性能:性能提升30%+。
  • 高稳定:抖动率在10%以内。
  • 高可维:全量备份恢复时间在8h以内。
  • 高可维:RTO时间缩短一半。
  • 低成本:整体空间减少一半。

相关文档