Campaign Classicv7 — 資料庫模組pg_stat_statements的用途與用途

瞭解Adobe Campaign Classic v7中db (資料庫)模組pg_stat_statements的用途與使用。

說明 description

環境

Adobe Campaign Classic v7 (ACC v7)

問題/症狀

  1. 什麼是資料庫模組pg_stat_statements

  2. 為何使用者端要求啟用?

  3. 如何啟用?

解決方法 resolution

  1. pg_stat_statements模組提供追蹤伺服器執行之所有SQL敘述句的執行統計資料的方法。

    模組必須透過在postgresql.conf中將pg_stat_statements新增到shared_preload_libraries來載入,因為它需要額外的共用記憶體。

    這表示需要重新啟動伺服器才能新增或移除模組。

    連結https://www.postgresql.org/docs/9.4/pgstatstatements.html

  2. 在此表格上實作檢視型別結構描述,讓我們監視需要很長時間才能進行的查詢。

    如此一來,使用者端將能夠調整這些專案,並最佳化效能。

    此擴充功能提供執行查詢的相關量度:哪些查詢最常執行,以及每個查詢所需的時間。

  3. pg_stat_statements

    1. 確認已安裝適用於Postgres版本的正式PostgreSQL貢獻者套件。

      code language-none
      $ dpkg -l | grep postgres
      postgresql-contrib-9.3
      

      如果未安裝,請安裝。

      code language-none
      $ apt-get install postgresql-contrib-9.3
      
    2. 變更postgresql.conf以在啟動時預先載入模組。

      預設: shared_preload_libraries = ''

      新增: shared_preload_libraries = 'pg_stat_statements'

      如果同時使用pg_stat_statementsauto_explain,請使用 ONE 記錄,並以逗號分隔。

      code language-none
      shared_preload_libraries = 'auto_explain,pg_stat_statements'
      
    3. 在您要監視的資料庫中,執行CREATE查詢:

      auto_explain不需要建立延伸模組,只有pg_stat_statements才需要。

      code language-none
      psql
      postgres=# \c mydatabase
      mydatabase=# CREATE EXTENSION pg_stat_statements;
      
    4. postgresql.conf的自訂OPTIONS區段中,新增下列行:

      code language-none
      pg_stat_statements.max = 5000
      pg_stat_statements.track = all
      pg_stat_statements.save = on
      
    5. 重新啟動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;
    
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f