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