如何快速识别内存占用较高的会话?
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 占用内存较高的原因。