PostgreSQL查找慢查询

统计CPU

ps -u postgres -o %cpu | awk '{s+=$1} END {print "Postgres Total CPU: " s "%"}'

查看活跃查询

SELECT pid, now() - query_start AS duration, query, state FROM pg_stat_activity WHERE state = 'active' ORDER BY duration DESC;
SELECT pid, now() - query_start AS duration, query, state FROM pg_stat_activity WHERE state = 'active' ORDER BY duration DESC LIMIT 5;

查看连接IP和查询语句

SELECT pid, now() - query_start AS 执行时间, usename AS 用户名, 
client_addr AS 连接IP, state AS 状态, query AS 查询语句         
FROM pg_stat_activity WHERE
 pid <> pg_backend_pid() ORDER BY 执行时间 DESC;

查看扫表

SELECT 
    relname AS 表名,
    seq_scan AS 全表扫描次数,
    seq_tup_read AS 全表扫描读取行数,
    idx_scan AS 索引扫描次数,
    idx_tup_fetch AS 索引提取行数
FROM pg_stat_user_tables
WHERE seq_scan > 0
ORDER BY seq_tup_read DESC
LIMIT 10;

启用插件

CREATE EXTENSION IF NOT EXISTS pg_stat_statements; 

 重置自动增续ID

SELECT setval('tag_id_seq', (SELECT MAX(id) FROM tag));

添加新评论 »