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,有問題歡迎共享,共同提升!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章