日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

sql statements_Postgresql监控sql模块之pg_stat_statements模块--部署篇

發(fā)布時(shí)間:2024/7/23 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql statements_Postgresql监控sql模块之pg_stat_statements模块--部署篇 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

今天主要介紹一下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 void

pg_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 install

2、修改配置文件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 status

4、加載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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。