PostgreSql查询正在执行的SQL和查询执行耗时的SQL
运行在AWS RDS上的PostgreSql今天TransactionID耗尽,原因是有一个SQL执行占用CPU超过12小时
–查询正在执行的SQL
SELECT * FROM pg_stat_activity WHERE datname='schema名称'; |
–结束正在进行的R查询
SELECT pg_cancel_backend(pid); |
–结束正在执行CUD操作
SELECT pg_terminate_backend(pid); |
如何找到那些SQL执行时间长的SQL?
STEP1.开启pg_stat_statements 拓展,
此处需要PostgreSql支持,部分版本需要编译安装。
CREATE extension pg_stat_statements; SELECT pg_stat_reset(); SELECT pg_stat_statements_reset(); |
STEP2.等待一段时间
STEP3.查询最耗时的SQL
SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5; |
STEP4.查询使用Buffer次数最多的SQL
SELECT * FROM pg_stat_statements ORDER BY shared_blks_hit+shared_blks_read DESC LIMIT 5; |
Recent Comments