Redrock Postgres 文档
主页 切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页
编辑页面

如何快速识别内存占用较高的会话?

问题描述

PostgreSQL 服务器实例在运行的过程中,处理的业务负载会有变化,系统内存占用率可能会出现波动。在系统内存占用率较高的时刻,如何快速识别内存占用较高的会话?

问题解答

Redrock Postgres 提供了统计视图pg_stat_activity,视图中的memory_used字段展示了每个会话占用的内存量。我们可以执行下面的查询查看实例中内存占用较高的会话。

SELECT pg_size_pretty(memory_used), query FROM pg_stat_activity
  ORDER BY memory_used DESC LIMIT 10;

通过上面的查询,我们获取到了会话正在执行的 SQL 语句,接下来可以使用 SQL 命令EXPLAIN分析查询的执行计划,进一步定位 SQL 占用内存较高的原因。