文档首页/ 云数据库 GaussDB(for MySQL)/ 常见问题/ 数据库性能/ 长事务产生大量临时表导致内存超限的解决办法
更新时间:2024-09-05 GMT+08:00

长事务产生大量临时表导致内存超限的解决办法

场景描述

云数据库GaussDB(for MySQL)实例在11:30到12:27分内存使用率持续上升,最终触发内存超限。

图1 内存使用率

原因分析

  1. 查看processlist.log日志,查询到有两个慢SQL与图1中内存增长的时间比较匹配。
    图2 查询慢SQL
  2. 查看慢查询中的表数据量约90GB,数据行数约10亿行,且通过图2中的执行时间可以看出,两个SQL执行了40~50分钟,跟监控中内存增长的时间基本一致,确定是临时表内存不受控导致。

解决方案

  1. 升级实例规格,将内存利用率维持在合理范围,防止业务突增导致实例OOM。变更实例规格的详细内容请参考变更实例的CPU和规格
  2. 根据业务实际情况优化慢查询。