pg_stat_statements模块含义?
- pg_stat_statements模块提供一种方法追踪一个服务器所执行的所有 SQL 语句的执行统计信息,可以用于统计数据库的资源开销,分析TOP SQL。
- 如下所示表中所代表的字段:f放到
-- SQL统计
SELECT
userid AS 执行者id ,
dbid AS 执行数据库id ,
query AS 执行的语句 ,
calls AS 执行次数 ,
total_time AS 执行总时间,
total_time/calls AS 执行平均时间,
rows AS 影响的总行数,
min_time,
max_time,
mean_time AS 平均时间
FROM pg_stat_statements
SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit /nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5;
- 各个字段代表的含义信息?
最耗时 SQL,单次调用最耗时 SQL TOP 5
select userid::regrole, dbid, query from pg_stat_statements order by mean_time desc limit 5;
最耗IO SQL,单次调用最耗IO SQL TOP 5
select userid::regrole, dbid, query from pg_stat_statements order by (blk_read_time+blk_write_time)/calls desc limit 5;
总最耗IO SQL TOP 5
select userid::regrole, dbid, query from pg_stat_statements order by (blk_read_time+blk_write_time) desc limit 5;
用户也可以定期清理历史的统计信息,通过调用如下SQL
select pg_stat_statements_reset();
响应时间抖动最严重 SQL
select userid::regrole, dbid, query from pg_stat_statements order by stddev_time desc limit 5;
最耗共享内存 SQL
select userid::regrole, dbid, query from pg_stat_statements order by (shared_blks_hit+shared_blks_dirtied) desc limit 5;
最耗临时空间 SQL
select userid::regrole, dbid, query from pg_stat_statements order by temp_blks_written desc limit 5;
重置统计信息
pg_stat_statements是累积的统计,如果要查看某个时间段的统计,需要打快照
- 还希望来JAVA WEB开发交流群:958923746,有问题欢迎共享,共同提升!