sql statements_Postgresql监控sql模块之pg_stat_statements模块--部署篇
概述
今天主要介紹一下PG一個很重要的模塊--pg_stat_statements模塊,對于做性能觀察還是很不錯的。
一、pg_state_statements模塊簡介
1、簡介
pg_stat_statements模塊提供一種方法追蹤一個服務器所執行的所有 SQL 語句的執行統計信息,可以用于統計數據庫的資源開銷,分析TOP SQL。
該模塊必須通過在postgresql.conf的shared_preload_libraries中增加pg_stat_statements來載入,因為它需要額外的共享內存。
這意味著增加或移除該模塊需要一次服務器重啟。
當pg_stat_statements被載入時,它會跟蹤該服務器 的所有數據庫的統計信息。
該模塊提供了一個視圖 pg_stat_statements以及函數pg_stat_statements_reset 和pg_stat_statements用于訪問和操縱這些統計信息。
這些視圖和函數不是全局可用的,但是可以用CREATE EXTENSION pg_stat_statements 為特定數據庫啟用它們。
2、字段含義
pg_stat_statements字段列含義如下
3、常用函數
?pg_stat_statements_reset() returns voidpg_stat_statements_reset丟棄目前由pg_stat_statements統計的所有信息,默認情況下,這個函數只能運行在超級用戶下。
4、常用變量
1)pg_stat_statements.max(integer)
pg_stat_statements.max是最大追蹤的統計數據數量(即,視圖中的最大行數)。如果數據量大于最大值,那么執行最少的語句將會被丟棄(本人測試,如果語句執行次數都為1時,其次是時間久的數據被丟棄),這個值默認是1000,這個變量在服務啟動前設置。
2)pg_stat_statements.track(enum)
pg_stat_statements.track控制統計數據規則,top用于追蹤top-level statement(直接由客戶端方發送的),all還會追蹤嵌套的statements(例如在函數中調用的statements)
3)pg_stat_statements.track_utility(boolen)
pg_stat_statements.track_utility控制是否跟蹤公共程序命令(utility commands),公共程序命令是SELECT/INSERT/UPDATE/DELETE以外的命令,默認值是開啟,只有超級用戶可以更改此設置。
4)pg_stat_statements.save(boolean)
pg_stat_statements.save指定在服務器關閉時,是否保存統計信息。如果設置off,服務關閉時,統計信息將不會保存。默認值是on。這個值只能夠在postgresql.conf中或者命令行設置。
該模塊需要額外的共享內存,內存大小大致為pg_stat_statements.max* track_activity_query_size。要注意的是,一旦模塊被加載,即使pg_stat_statements.track設置為none,共享內存都會被消耗。
二、安裝pg_stat_statements
1、編譯安裝pg_stat_statements模塊
pg_stat_statements是PostgreSQL的核心插件之一,可以在編譯PostgreSQL時安裝,也可以單獨安裝。如果$pgpath/share/extension目錄下存在pg_stat_statements--1.0.sql,說明安裝成功了
find / -name 'pg_stat_statements'cd /opt/software/postgresql-12.2/contrib/pg_stat_statementsmake && make install2、修改配置文件postgresql.conf
$ vim /data/pgdata/data/postgresql.conf====================================================================================#------------------------------------------------------------------------------# PG_STAT_STATEMENTS OPTIONS#------------------------------------------------------------------------------shared_preload_libraries = 'pg_stat_statements' #加載pg_stat_statements模塊track_io_timing = on #跟蹤IO消耗的時間pg_stat_statements.max = 10000 #最多保留多少條統計信息,通過LRU算法,覆蓋老的記錄。pg_stat_statements.track = all #all:所有SQL包括函數內嵌套的SQL,top:直接執行的SQL(函數內的sql不被跟蹤),none:不跟蹤pg_stat_statements.track_utility=on # 是否跟蹤非DML語句 (例如DDL,DCL),on表示跟蹤, off表示不跟蹤pg_stat_statements.save = on # 重啟后是否保留統計信息 #track_activity_query_size = 2048 #設置單條SQL的最長長度,超過被截斷顯示3、重啟PG服務
cd /opt/postgres/bin./pg_ctl restart -m fast./pg_ctl status4、加載pg_stat_statements模塊
到這里就完成pg_stat_statements模塊安裝了。
./psqlcreate extension pg_stat_statements; dx覺得有用的朋友多幫忙轉發哦!后面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~
總結
以上是生活随笔為你收集整理的sql statements_Postgresql监控sql模块之pg_stat_statements模块--部署篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 增量设为3 循环_Orac
- 下一篇: java音频采样_音频重采样的坑