安裝過程以下:進入安裝包的contrib/pg_stat_statements目錄,執行編譯和安裝動做:css
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中,進行配置:html
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語句執行效率慢:
統計結果一直都在,重啓也不會清零,那麼統計結果如何清零從新統計呢?執行下面SQL便可:
表 F-20. pg_stat_statements 字段表明的含義sql
名字 | 類型 | 參考 | 描述 |
---|---|---|---|
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) |