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

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

說明 description

環境

Adobe Campaign Classic v7 (ACC v7)

問題/症狀

  1. 什麼是db模組 pg_stat_statements

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

  3. 如何啟用?

解決方法 resolution

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

    必須透過新增來載入模組 pg_stat_statementsshared_preload_librariespostgresql.conf,因為它需要額外的共用記憶體。

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

    連結 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,使用 以逗號錄製和分隔。

      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. 在的自訂OPTIONS區段中 postgresql.conf,新增以下行:

      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