Campaign Classicv7 — 資料庫模組pg_stat_statements的用途與用途
瞭解Adobe Campaign Classic v7中db (資料庫)模組pg_stat_statements
的用途與使用。
說明 description
環境
Adobe Campaign Classic v7 (ACC v7)
問題/症狀
-
什麼是資料庫模組
pg_stat_statements
? -
為何使用者端要求啟用?
-
如何啟用?
解決方法 resolution
-
pg_stat_statements模組提供追蹤伺服器執行之所有SQL敘述句的執行統計資料的方法。
模組必須透過在
postgresql.conf
中將pg_stat_statements
新增到shared_preload_libraries
來載入,因為它需要額外的共用記憶體。這表示需要重新啟動伺服器才能新增或移除模組。
-
在此表格上實作檢視型別結構描述,讓我們監視需要很長時間才能進行的查詢。
如此一來,使用者端將能夠調整這些專案,並最佳化效能。
此擴充功能提供執行查詢的相關量度:哪些查詢最常執行,以及每個查詢所需的時間。
-
pg_stat_statements
-
確認已安裝適用於Postgres版本的正式PostgreSQL貢獻者套件。
code language-none $ dpkg -l | grep postgres postgresql-contrib-9.3
如果未安裝,請安裝。
code language-none $ apt-get install postgresql-contrib-9.3
-
變更
postgresql.conf
以在啟動時預先載入模組。預設:
shared_preload_libraries = ''
新增:
shared_preload_libraries = 'pg_stat_statements'
如果同時使用
pg_stat_statements
和auto_explain
,請使用 ONE 記錄,並以逗號分隔。code language-none shared_preload_libraries = 'auto_explain,pg_stat_statements'
-
在您要監視的資料庫中,執行
CREATE
查詢:auto_explain
不需要建立延伸模組,只有pg_stat_statements
才需要。code language-none psql postgres=# \c mydatabase mydatabase=# CREATE EXTENSION pg_stat_statements;
-
在
postgresql.conf
的自訂OPTIONS區段中,新增下列行:code language-none pg_stat_statements.max = 5000 pg_stat_statements.track = all pg_stat_statements.save = on
-
重新啟動postgresql服務。
範例:取得資料庫中最昂貴的5個查詢。
code language-none 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 as s inner join pg_database as d on d.oid = s.dbid where d.datname = 'Database_Name' order by total_time desc limit 5;
-