[ PROMPT_NODE_23532 ]
monitor-pg-stat-statements
[ SKILL_DOCUMENTATION ]
## 启用 pg_stat_statements 进行查询分析
pg_stat_statements 会跟踪所有查询的执行统计信息,有助于识别缓慢和频繁执行的查询。
**错误示例(无法洞察查询模式):**
sql
-- 数据库很慢,但哪些查询是问题所在?
-- 没有 pg_stat_statements 无法得知
**正确示例(启用并查询 pg_stat_statements):**
sql
-- 启用扩展
create extension if not exists pg_stat_statements;
-- 按总耗时查找最慢的查询
select
calls,
round(total_exec_time::numeric, 2) as total_time_ms,
round(mean_exec_time::numeric, 2) as mean_time_ms,
query
from pg_stat_statements
order by total_exec_time desc
limit 10;
-- 查找最频繁的查询
select calls, query
from pg_stat_statements
order by calls desc
limit 10;
-- 优化后重置统计信息
select pg_stat_statements_reset();
需要监控的关键指标:
sql
-- 平均耗时高的查询(优化的候选对象)
select query, mean_exec_time, calls
from pg_stat_statements
where mean_exec_time > 100 -- > 100ms 平均耗时
order by mean_exec_time desc;
参考:[pg_stat_statements](https://supabase.com/docs/guides/database/extensions/pg_stat_statements)