【GaussDB】Ops巡检-Buffer命中率异常如何解决?

84 阅读2分钟

告警解释

=======

此告警对应指标“buffer 命中率”超出配置阈值,buffer命中率表示执行语句从共享缓存区中获取页面数量占获取页面总量的比例,此指标为数据库执行的全量语句,非单个语句。

对系统的影响

  • buffer命中率越高表示语句扫描的页面更多从共享缓冲区获取,更少从磁盘获取;反之,则buffer命中率越低。
  • 此指标下降,业务性能存在下降的可能。

可能原因

  • 语句计划不优,导致扫描页面过多。
  • 数据量和shared_buffer配置不合理,导致共享缓存区不足以支撑大数据量,执行语句需要频繁从磁盘获取页面。
  • 业务特征没有冷热数据区分,导致共享缓存区中的页面频繁置换。

处理步骤

  1. 收到告警后,首先通过查看监控指标查看指标“buffer 命中率”,确认指标情况以及触发告警的组件。

    • 如果告警的是CN节点,对系统无影响。
    • 如果是DN节点,执行2
  2. 通过告警的组件节点,登录系统库,执行如下命令确认共享缓存区的大小。

    show shared_buffers;

    同步通过查看监控指标查看“动态内存使用率”指标。

    如果“动态内存使用率”小于30%,可以适当调大shared_buffer,通过修改实例参数修改,建议不要超过max_process_memory参数值的40%。

    调整参数,需联系技术支持协助评估。

  3. 确认buffer命中率比较低的语句,优化语句的执行计划,适当的创建索引,减少语句执行的时候扫描的页面数量。

    可以通过一天内的WDR报告SQL ordered by Physical Reads部分识别Query,SQL ordered by Physical Reads部分排在越前边的语句,说明从磁盘读的页面越多,越容易导致buffer命中率降低。

    WDR报告使用具体请参考《云数据库 GaussDB 24.1.30 使用指南 (for 华为云Stack 8.3.1)》中的“用户指南 > 操作指南 > 智能运维 > 诊断优化 > 性能报告”章节。

  4. 是否存在扫描全表的业务,是否没有冷热数据区分,导致共享缓存区中的页面频繁的更换。

    如果存在定时扫描全表的任务,且业务无冷热数据的区分,基本上都会降低buffer命中率,从数据库分析属于正常现象,可以考虑联系业务优化。

告警清除

此告警修复后,系统会自动清除此告警,无需手工清除。

参考信息

不涉及。

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…