PostgreSQL中高耗SQL的獲取可以使用pg_stat_statements模塊來(lái)獲取,pg_stat_statements模塊提供執(zhí)行SQL語(yǔ)句的執(zhí)行統(tǒng)計(jì)信息。
該模塊必須在postgresql.conf的shared_preload_libraries中增加pg_stat_statements來(lái)載入,因?yàn)樗枰~外的共享內(nèi)存。增加或移除該模塊需要將數(shù)據(jù)庫(kù)重啟。
當(dāng)pg_stat_statements被載入時(shí),它會(huì)跟蹤該服務(wù)器的所有數(shù)據(jù)庫(kù)的統(tǒng)計(jì)信息。該模塊提供了視圖pg_stat_statements以及函數(shù)pg_stat_statements_reset用于訪問和操縱這些統(tǒng)計(jì)信息。這些視圖和函數(shù)不是全局可用的,但是可以在指定數(shù)據(jù)庫(kù)創(chuàng)建該擴(kuò)展。
創(chuàng)建extension模塊
postgres=# CREATE EXTENSION pg_stat_statements; CREATE EXTENSION |
修改數(shù)據(jù)庫(kù)PG_HOME下的postgresql.conf文件
shared_preload_libraries= pg_stat_statements
pg_stat_statements.max= 10000 #pg_stat_statements中記錄的最大的SQL條目數(shù),默認(rèn)為5000
pg_stat_statements.track= all#記錄pg_stat_statements中的
pg_stat_satements.saveon #用來(lái)控制數(shù)據(jù)庫(kù)在關(guān)閉的時(shí)候,是否將SQL信息保存到文件中。默認(rèn)打開
pg_stat_satements.track_utilityon #追蹤SQL命令:DQLDDL 以及DQL,DDL以外的其他SQL命令(off只記錄DQLDDL)
如果沒有配置postgresql.conf文件中的shared_preload_libraries,那么將會(huì)提示如下報(bào)錯(cuò):
ERROR:pg_stat_statements must be loaded via shared_preload_libraries
使用pg_ctl重新啟動(dòng)數(shù)據(jù)庫(kù),使擴(kuò)展生效。
pg_ctl start -D $PGDATA -l /tmp/pg_rotate_logfile() |
進(jìn)入數(shù)據(jù)庫(kù),查看pg_stat_statements視圖,有數(shù)據(jù)則安裝成功。
psql -U postgres -d pgtestdb select * from pg_stat_statements; |
該視圖的結(jié)構(gòu)信息如下:
由于安全性原因,只有超級(jí)用戶和pg_read_all_stats角色的成員被允許看到其他用戶執(zhí)行的查詢的SQL文本或者queryid。
log_min_duration_statement這個(gè)參數(shù)可以控制閾值的時(shí)間,如果查詢花費(fèi)的時(shí)間長(zhǎng)于此閾值時(shí)間,則會(huì)記錄該SQL。默認(rèn)為1s。可以使用
ALTER SYSTEM SETlog_min_duration_statement = 1000;
更改閾值記錄,單位為ms。
我們可以在數(shù)據(jù)庫(kù)中看到平均運(yùn)行時(shí)間最高的查詢,如下所示:
SELECT total_time, min_time,(total_time/calls) as avg_time, max_time, mean_time, calls, rows,query FROM pg_stat_statements ORDER BY mean_time DESC LIMIT 10; |
返回結(jié)果如下:
其中各項(xiàng)的涵義:
total_time:返回查詢的總運(yùn)行時(shí)間(以毫秒為單位)。
min_time、avg_time和max_time:返回查詢的最小、平均和最大運(yùn)行時(shí)間。
mean_time:使用total_time/調(diào)用返回查詢的平均運(yùn)行時(shí)間(以毫秒為單位)。
Calls (調(diào)用):返回查詢運(yùn)行的總數(shù)。
Rows(行數(shù)):返回由于查詢而返回或受影響的行總數(shù)。
Query(查詢):返回正在運(yùn)行的查詢。默認(rèn)情況下,最多顯示1024個(gè)查詢字節(jié)。可以使用track_activity_query_size參數(shù)更改此值。
pg_stat_statements所獲得的統(tǒng)計(jì)數(shù)據(jù)一直累積到重置。
可以使用以下腳本進(jìn)行按天備份。
備份完成后可以通過具有超級(jí)用戶權(quán)限的用戶連接到數(shù)據(jù)庫(kù)以重置統(tǒng)計(jì)數(shù)據(jù)來(lái)運(yùn)行重置:
SELECTpg_stat_statements_reset();
#!/bin/bash # this script is aimed to delete the expired data; # and use the vacummdb command to clean up databases. # Copyright(c) 2016--2016 yuxiangli All Copyright reserved. echo "-----------------------------------------------------" echo `date +%Y%m%d%H%M%S` dates= `date +%Y%m%d` psql -U hbdx_xxx -h 133.0.xxx.xx -d testdb -p xxx << EOF create table public.pg_stat_statements_$dates as select * from public.pg_stat_statements; SELECT pg_stat_statements_reset(); q EOF echo "-----------------------------------------------------" echo `date +%Y%m%d%H%M%S` echo "-----------------------------------------------------" |
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/130094.html
摘要:作者譚峰張文升出版日期年月頁(yè)數(shù)頁(yè)定價(jià)元本書特色中國(guó)開源軟件推進(jìn)聯(lián)盟分會(huì)特聘專家撰寫,國(guó)內(nèi)多位開源數(shù)據(jù)庫(kù)專家鼎力推薦。張文升中國(guó)開源軟件推進(jìn)聯(lián)盟分會(huì)核心成員之一。 很高興《PostgreSQL實(shí)戰(zhàn)》一書終于出版,本書大體上系統(tǒng)總結(jié)了筆者 PostgreSQL DBA 職業(yè)生涯的經(jīng)驗(yàn)總結(jié),本書的另一位作者張文升擁有豐富的PostgreSQL運(yùn)維經(jīng)驗(yàn),目前就職于探探科技任首席PostgreS...
摘要:近日,正式發(fā)布了版本,該版本進(jìn)行了大量的修復(fù)和功能改進(jìn)。事實(shí)上,開發(fā)者獲得的所有標(biāo)準(zhǔn)會(huì)使它更加強(qiáng)大一個(gè)最好的例子是來(lái)自近年來(lái)的索引,它給提供了極大的性能提升。在最新發(fā)布的版本中,在中的輸出也更具可讀性。 【編者按】作為一款開源的對(duì)象—關(guān)系數(shù)據(jù)庫(kù),Postgres 一直得到許多開發(fā)者喜愛。近日,Postgres 正式發(fā)布了9.5版本,該版本進(jìn)行了大量的修復(fù)和功能改進(jìn)。而本文將分享10個(gè) ...
摘要:旨在記錄自己的學(xué)習(xí)過程,方便日后遇到問題是及時(shí)查閱復(fù)習(xí),另一方面也希望能幫助像筆者一樣從來(lái)沒使用過的人快速熟悉。 這篇文章主要記錄的是本人學(xué)習(xí)使用IntelliJ IDEA的筆記,可能不是特別的詳細(xì)。旨在記錄自己的學(xué)習(xí)過程,方便日后遇到問題是及時(shí)查閱復(fù)習(xí),另一方面也希望能幫助像筆者一樣從來(lái)沒使用過IDEA的人快速熟悉IDEA。文章錯(cuò)誤之處還請(qǐng)各位大佬批評(píng)指正。(文末有本人的微信公眾號(hào),...
摘要:上有主節(jié)點(diǎn)和從節(jié)點(diǎn)兩部分,兩者主要的功能是生成查詢計(jì)劃并派發(fā),以及協(xié)調(diào)并行計(jì)算,同時(shí)在上保存著,這個(gè)全局目錄存著一組數(shù)據(jù)庫(kù)系統(tǒng)本身所具有的元數(shù)據(jù)的系統(tǒng)表。 前言:近年來(lái),互聯(lián)網(wǎng)的快速發(fā)展積累了海量大數(shù)據(jù),而在這些大數(shù)據(jù)的處理上,不同技術(shù)棧所具備的性能也有所不同,如何快速有效地處理這些龐大的數(shù)據(jù)倉(cāng),成為很多運(yùn)營(yíng)者為之苦惱的問題!隨著Greenplum的異軍突起,以往大數(shù)據(jù)倉(cāng)庫(kù)所面臨的很多...
閱讀 1353·2023-01-11 13:20
閱讀 1700·2023-01-11 13:20
閱讀 1212·2023-01-11 13:20
閱讀 1904·2023-01-11 13:20
閱讀 4164·2023-01-11 13:20
閱讀 2751·2023-01-11 13:20
閱讀 1397·2023-01-11 13:20
閱讀 3666·2023-01-11 13:20