SQL优化之PostgreSQL的pg_stat_statements统计模块

 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
      

       

  •  最耗时的5条数据,最后一列表示命中率,由此我们可以拿出效率慢的sql进行优化。
    • 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;  
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  

  • 总最耗IO SQL TOP 5
    select userid::regrole, dbid, query from pg_stat_statements order by (blk_read_time+blk_write_time) desc limit 5;  
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  

  • 用户也可以定期清理历史的统计信息,通过调用如下SQL
    select pg_stat_statements_reset();  
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  • 响应时间抖动最严重 SQL
    select userid::regrole, dbid, query from pg_stat_statements order by stddev_time desc limit 5;  
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  • 最耗共享内存 SQL
    select userid::regrole, dbid, query from pg_stat_statements order by (shared_blks_hit+shared_blks_dirtied) desc limit 5;  
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  • 最耗临时空间 SQL
    select userid::regrole, dbid, query from pg_stat_statements order by temp_blks_written desc limit 5;  
    
    
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  • 重置统计信息
    pg_stat_statements是累积的统计,如果要查看某个时间段的统计,需要打快照
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

  • 如何解决了您的问题,欢迎关注我!还希望来JAVA WEB开发交流群:958923746,有问题欢迎共享,共同提升!

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

75888丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值