PostgreSQL SQL 性能统计扩展
pg_stat_statements 按归一化 SQL 统计调用次数、耗时、行数和 I/O,是定位慢查询和资源消耗的核心扩展。它需要预加载并创建扩展。
# postgresql.conf
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = top
psql -d appdb -c 'CREATE EXTENSION IF NOT EXISTS pg_stat_statements;'
psql -d appdb -c "SELECT calls, total_exec_time, mean_exec_time, query
FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10;"
psql -d appdb -c "SELECT calls, rows, shared_blks_read, query
FROM pg_stat_statements ORDER BY shared_blks_read DESC LIMIT 10;"
psql -d appdb -c 'SELECT pg_stat_statements_reset();'
psql -d appdb -c 'SELECT * FROM pg_stat_statements_info;'
shared_preload_libraries 并重启;只 CREATE EXTENSION 不够。track=top 只跟踪顶层语句;嵌套函数/存储过程用 all。psql — 查询统计pg_stat_activity — 当前活动会话vacuumdb — 维护与统计信息