专家实录|TB级数据实战:GaussDB大容量性能优化和维护挑战

举报
GaussDB 数据库 发表于 2025/11/06 14:57:35 2025/11/06
【摘要】 本文作者:华为数据库高性能存储专家陈玉标专家采访实录,可观看视频大容量引发的性能下降随着数据量的持续增长,当数据库的缓冲区占比达到极高水平时,面临的首要问题便是缓冲区命中率的下降,这意味着BufferPool很多时候无法读取目标页面,必须从磁盘读取相应数据。而云上环境使用的EVS磁盘存在带宽上限,一旦触及该上限,会引发页面的频繁淘汰,直接触发IO瓶颈。当出现IO瓶颈后,业务访问除了原有的内核...

本文作者:华为数据库高性能存储专家陈玉标

专家采访实录,可观看视频

大容量引发的性能下降

随着数据量的持续增长,当数据库的缓冲区占比达到极高水平时,面临的首要问题便是缓冲区命中率的下降,这意味着BufferPool很多时候无法读取目标页面,必须从磁盘读取相应数据。而云上环境使用的EVS磁盘存在带宽上限,一旦触及该上限,会引发页面的频繁淘汰,直接触发IO瓶颈。当出现IO瓶颈后,业务访问除了原有的内核延迟外,还会额外增加RW延迟,最终导致性能显著下滑。

基于TPC-C模型的冷热数据测试显示:在冷数据场景下,若访问范围超出缓冲区容量,性能会迅速跌至谷底。在热数据场景下,即便整体数据规模庞大,但由于业务仅访问其中部分热数据,性能并不会出现明显波动。

1.png

这意味着在生产环境中,一旦业务访问的数据范围远超缓冲区容量,就可能引发严重的性能问题,而这个问题是必须要解决的。

对此,GaussDB通过IO优化与调整数据库访问模型的方式,来实现性能的提升。为突破EVS磁盘的带宽限制,GaussDB引入本地NVME盘、SSD,形成“BufferPool+NVME”的二级缓存架构,具体优化如下:

  • 将NVME盘作为BufferPool的拓展,直接对其进行读写操作,使大量热数据缓存于高速存储中,从而提升读写带宽并降低写延迟。
  • 把原本在BufferPool中执行的“压缩多页处理”等重负载任务,迁移至NVME盘的SSD中执行,在RW延迟比较低的存储盘上进行并行加速,减轻BufferPool压力,保障内核性能稳定。
  • 在NVME层部署专属淘汰算法,确保热数据尽可能留存,进一步提升缓存命中率。
GaussDB的内核支持数据压缩,原本将多页压缩的处理逻辑放在BufferPool中执行时,会给其带来较大压力。因此,GaussDB将这类计算负载较重的任务迁移至NVME的SSD组件中处理,以此来缓解BufferPool的压力,保障数据库性能稳定。

大容量引发的性能抖动

除了上述因访问数据量增长导致的性能下降问题外,大容量场景下还有一个突出问题:当RW负载超过最大承载阈值时,性能会出现明显抖动,根本原因是,为了确保读写延迟不影响业务的运行,内核中会提前将部分页面刷写完成并放入空闲列表,确保业务申请时能立即获取干净页面,此时性能表现较好。

而当空闲列表中的页面耗尽时,系统就需要临时执行淘汰操作,这会额外增加一次RW延迟,进而导致性能下降。这种性能波动中波峰与波谷的形成,本质上与候选页面的可用性直接相关:当内核中存在可用的候选页面时,性能会维持在较高水平;一旦候选页面耗尽,性能便会出现明显下滑。而这种波动周期,通常与内核中干净页面的补充节奏相关。

要解决这个问题,核心的策略是应对RW过载,类似自动驾驶:车辆按照指定轨迹自动驾驶时,可能会偏离预设轨迹,而我们需要通过控制,让其平滑回归正轨。这里通常采用的是PID调节策略,通过三个核心变量的加权计算来实现负反馈调节:

P(比例)用于计算当前状态与预期目标的差距;

I(积分)用于统计历史累计的偏差总和;

D(微分)用于判断当前偏差的变化趋势。

基于这三个变量的计算结果,系统会动态调节前端业务压力。例如,根据带宽预期的变化,实时调整请求处理速度,确保业务负载始终在RW服务上限范围内,最终让数据库保持平稳运行,避免RW过载情况的发生。

在不同环境下,IO的承载能力是存在差异的,随着磁盘的老化,RW(读写操作)性能也会动态变化。那么,该如何确定与当前状态适配的RW预期上限?

为此,GaussDB引入了第二个核心策略——BBR算法。BBR算法基于网络瓶颈带宽与往返时延探测,精准找到当前环境下的最优IO带宽上限。它与PID调节策略形成互补:PID负责让系统运行更平稳,避免过载;BBR则确保IO带宽能被充分利用,不浪费资源。通过这两种策略的结合,既能解决数据库性能抖动问题,又能在大容量场景下实现RW使用率与性能的正向匹配——RW使用率越高,性能表现越优。实际效果显示,该方案可将原本的性能抖动幅度控制在2%以内。

大容量引发的运维挑战

除了性能问题,大容量还会带来运维方面的三重挑战:数据构建效率低、备份与恢复周期长、存储成本与运维成本增加。

针对这些运维问题,GaussDB的核心优化思路是:一、通过“并行化”提升处理速度,二、通过“打散+细粒度化”优化资源调度。

在“并行化”优化方面,主要从备份环节入手:通过多线程并行执行备份任务,同时结合此前部署的SSD存储,在数据发送前先进行压缩处理,这一步能有效减少待传输和存储的数据量,进一步提升备份效率。

而在备份恢复全流程中,引入“多级快照 + 细粒度备份”机制,在每次备份或恢复时,仅针对增量数据进行操作,从而大幅减少数据处理量,缩短整体耗时。

针对数据量增大带来的存储压力,通过“冷热数据自动识别”来进一步缩减容量,系统会周期性将冷数据压缩归档,并采用多页合并压缩的方式提升压缩率。

此外,日志回放也是成本攀升的一个重要环节。在大容量场景下,日志回放往往需要消耗大量时间。GaussDB的核心目标是削减日志回放环节的RTO:在原有的日志回放阶段,不再直接执行完整的日志回放操作,而是先对日志进行预处理——按页面粒度将日志串联成“日志链”,随后直接基于该日志链拉起业务并对外提供服务,后续仅在业务访问到未完成回放的页面时,才触发临时按需回放;对于平时未被访问的页面,其对应的未回放日志将由后台异步执行。通过这一方式,可大幅削减整体日志回放的RTO耗时。

关于未来发展演进

当前硬件性能正持续升级,以CPU和内存为例:CPU核心数已经从180核提升至256核,且256核版本已经支持超线程技术;内存容量也从500G逐步扩容至1T、2T。但与之矛盾的是,数据库的RW能力并没有随硬件的升级而线性增长,这也正是大容量场景下数据库IO性能迟迟无法改善的核心原因。

要从根本上解决这一问题,关键在于构建与当前硬件水平相匹配的数据库底座。因此,未来,GaussDB将围绕数据高可靠、高可用、大容量、高安全、读写高性能等指标来构建关键技术能力,实现数据库性能的协同优化,为企业TB乃至PB级数据场景提供稳定、高效的存储与计算支撑,助力业务在数据量激增的浪潮下持续释放价值。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。