PostgreSQL 活動會話歷史記錄 - 新的 pgsentinel 擴展

公司 PG哨兵 發布了同名的 pgsentinel 擴充功能(github 資料庫),它將 pg_active_session_history 視圖新增至 PostgreSQL - 活動會話的歷史記錄(類似於 Oracle 的 v$active_session_history)。

本質上,這些只是 pg_stat_activity 的逐秒快照,但有以下要點:

  1. 所有累積的資訊僅儲存在RAM中,並且消耗的記憶體量由最後儲存的記錄的數量來調節。
  2. 新增了 queryid 欄位 - 與 pg_stat_statements 擴充功能相同的 queryid(需要預先安裝)。
  3. 新增 top_level_query 欄位 - 呼叫目前查詢的查詢文字(如果使用 pl/pgsql)


pg_active_session_history 欄位的完整清單:

      專欄 | 類型 ------------------+------------------------ ash_time | 帶有時區的時間戳 datid | oid 日期名稱 | 文字 pid | 整數 usesysid | oid 使用者名稱 | 文字應用程式名稱| 文字 client_addr | 文字 client_hostname | 文字客戶端連接埠| 整數 backend_start | 帶有時區的時間戳記 xact_start | 有時區的時間戳帶有時區的時間戳記 state_change | 有時區的時間戳文字等待事件| 文字狀態 | 文字 backend_xid | xid backend_xmin | xid 頂級查詢 | 文字查詢| 文字查詢ID | bigint 後端_類型 | 文字                     

目前還沒有現成的安裝包。 建議下載原始程式碼並自行組裝庫。 您首先需要為您的伺服器安裝「devel」套件,並在 PATH 變數中設定 pg_config 的路徑。 我們收集:

cd pgsentinel/src
使
使安裝

在postgres.conf中加入參數:

Shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = 全部

# 記憶體中保存的最近記錄數
pgsentinel_ash.max_entries = 10000

重新啟動 PostgreSQL 並建立擴充功能:

建立擴展 pgsentinel;

累積的資訊使我們能夠回答以下問題:

  • 您在哪些等待時段花費最多時間?
  • 哪些會議最活躍?
  • 哪些請求最活躍?

當然,您可以使用 SQL 查詢獲得這些問題的答案,但透過使用滑鼠突出顯示感興趣的時間間隔,可以更方便地在圖表上直觀地看到這一點。 您可以使用免費程式來做到這一點 PASH瀏覽器 (您可以在 部分下載收集的二進位文件 發布).

啟動時,PASH-Viewer(從版本 0.4.0 開始)檢查 pg_active_session_history 視圖是否存在,如果存在,它將從中加載整個累積歷史記錄並繼續讀取新的傳入數據,每 15 秒更新一次圖表。

PostgreSQL 活動會話歷史記錄 - 新的 pgsentinel 擴展

來源: www.habr.com

添加評論