PostgreSQL模組——pg_stat_statements詳解和安裝測試

來源:互聯網
上載者:User

PostgreSQL模組——pg_stat_statements詳解和安裝測試

其實很簡單,最近可能需要對postgresql進行監控,所以接觸了很多相關的監控命令和工具,這邊文章主要是記錄下工作過程,怕之後會忘記。

我想要的功能:記錄每條sql的執行時間,能夠查詢每天執行最慢的top10。

下面先介紹下pg_stat_statements:(翻譯)

pg_stat_statements模組提供了一種跟蹤執行的所有SQL語句的統計資訊的方法。

這個模組必須改寫設定檔postgresql.conf中的shared_preload_libraries變數(之後講解如何配置),這是因為他需要額外的共用記憶體。同時也意味著需要重啟服務。

1-先看下pg_stat_statements視圖

欄位名

類型

引用

說明

userid

oid

pg_authid.oid

執行者id

dbid

oid

pg_database.oid

執行資料庫id

query

text

 

執行的語句

calls

bigint

 

執行次數

total_time

double precision

 

執行總時間 (平均值=total_time/calls )

rows

bigint

 

影響的總行數

shared_blks_hit

bigint

 

共用塊命中數量

shared_blks_read

bigint

 

共用塊讀數量

shared_blks_written

bigint

 

共用塊寫數量

local_blks_hit

bigint

 

本地塊命中數量

local_blks_read

bigint

 

本地塊讀數量

local_blks_written

bigint

 

本地塊寫數量

如上視圖和函數pg_stat_statements_reset只有在資料庫已經正確安裝,並且已經執行pg_stat_statements.sql指令碼後才會生效。只要pg_stat_statements成功添加,就會Tracing Service器上所有的資料庫操作。

處於安全的原因,普通使用者不允許查看其他使用者執行的語句資訊(query),如果視圖安裝到他的資料庫,那麼就可以查看相關的統計資訊(子健做的實驗實在超級使用者下:postgres使用者postgres庫)

注意,如果語句資訊(query)一樣,不論任何out-of-line變數的值被使用,都會認為這幾條聲明是相同的。使用out-of-line變數有助於組織語句並且可能回事統計資料更加有用

2­­-函數

pg_stat_statements_reset() returns void

pg_stat_statements_reset丟棄目前由pg_stat_statements統計的所有資訊,預設情況下,這個函數只能運行在超級使用者下。

3-組態變數

pg_stat_statements.max(integer)

pg_stat_statements.max是最大追蹤的統計資料數量(即,視圖中的最大行數)。如果資料量大於最大值,那麼執行最少的語句將會被丟棄(本人測試,如果語句執行次數都為1時,其次是時間久的資料被丟棄),這個值預設是1000,這個變數在服務啟動前設定。

pg_stat_statements.track(enum)

pg_stat_statements.track控制統計資料規則,top用於追蹤top-level statement(直接由用戶端方發送的),all還會追蹤嵌套的statements(例如在函數中調用的statements)

pg_stat_statements.track_utility(boolen)

pg_stat_statements.track_utility控制是否跟蹤公用程式命令(utility commands),公用程式命令是SELECT/INSERT/UPDATE/DELETE以外的命令,預設值是開啟,只有超級使用者可以更改此設定。

pg_stat_statements.save(boolean)

pg_stat_statements.save指定在伺服器關閉時,是否儲存統計資訊。如果設定off,服務關閉時,統計資訊將不會儲存。預設值是on。這個值只能夠在postgresql.conf中或者命令列設定。

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.