PostgreSQL下安裝pg_stat_statements


安裝過程如下:進入安裝包的contrib/pg_stat_statements目錄,執行編譯和安裝動作:

 

1 [root@server pg_stat_statements]# pwd
2 /soft/postgresql-9.1.2/contrib/pg_stat_statements
3 [root@server pg_stat_statements]# make && make install
4 make: `all' に対して行うべき事はありません.
5 /bin/mkdir -p '/usr/local/pgsql/lib'
6 /bin/mkdir -p '/usr/local/pgsql/share/extension'
7 /bin/sh ../../config/install-sh -c -m 755  pg_stat_statements.so '/usr/local/pgsql/lib/pg_stat_statements.so'
8 /bin/sh ../../config/install-sh -c -m 644 ./pg_stat_statements.control '/usr/local/pgsql/share/extension/'
9 /bin/sh ../../config/install-sh -c -m 644 ./pg_stat_statements--1.0.sql ./pg_stat_statements--unpackaged--1.0.sql  '/usr/local/pgsql/share/extension/'

 

在data/postgresql.conf中,進行配置:

 

shared_preload_libraries = 'pg_stat_statements'      

pg_stat_statements.max = 1000

pg_stat_statements.track = all

 

shared_preload_libraries = 'pg_stat_statements',表示要在啟動時導入pg_stat_statements 動態庫。
pg_stat_statements.max = 1000,表示監控的語句最多為1000句。
pg_stat_statements.track = top,表示不監控嵌套的sql語句。
pg_stat_statements.track_utility = true,表示對 INSERT/UPDATE/DELETE/SELECT 之外的sql動作也作監控。
pg_stat_statements.save = true,表示當postgresql停止時,把信息存入磁盤文件以備下次啟動時再使用。

重新啟動 postgresql,創建sql語句:
create extension pg_stat_statements;

查詢哪些sql語句執行效率慢:
  1. SELECT  query, calls, total_time(total_time/callsas average ,rows
  2.         100.0 * shared_blks_hit /nullif(shared_blks_hit + shared_blks_read, 0AS hit_percent 
  3. FROM    pg_stat_statements 
  4. ORDER   BY average DESC LIMIT 10;
統計結果一直都在,重啟也不會清零,那么統計結果如何清零重新統計呢?執行下面SQL即可:
    1. select pg_stat_statements_reset(;
 
        

表 F-20. pg_stat_statements 字段代表的含義

名字 類型 參考 描述
userid oid pg_authid.oid

執行該語句的用戶的OID

dbid oid pg_database.oid 執行該語句的數據庫的OID
query text   有代表性的語句的文本 (多達 track_activity_query_size 字節)
calls bigint   執行的次數
total_time double precision   該語句花費的總時間,以毫秒計
rows bigint   該語句恢復或影響的行的總數
shared_blks_hit bigint   該語句命中的共享塊緩存的總數
shared_blks_read bigint   該語句讀取的共享塊的總數
shared_blks_dirtied bigint   該語句弄臟的共享塊的總數
shared_blks_written bigint   該語句寫入的共享塊的總數
local_blks_hit bigint   該語句命中的本地塊緩存的總數
local_blks_read bigint   該語句讀取的本地塊的總數
local_blks_dirtied bigint   該語句弄臟的本地塊的總數
local_blks_written bigint   該語句寫入的本地塊的總數
temp_blks_read bigint   該語句讀取的臨時塊的總數
temp_blks_written bigint   該語句寫入的臨時塊的總數
blk_read_time double precision   該語句讀取塊花費的總時間,以毫秒計 (如果啟用了track_io_timing,否則為0)
blk_write_time double precision   該語句寫入塊花費的總時間,以毫秒計 (如果啟用了track_io_timing,否則為0)
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM