PostgreSQL中高耗SQL的獲取可以使用pg_stat_statements模塊來獲取,pg_stat_statements模塊提供執行SQL語句的執行統計信息。
該模塊必須在postgresql.conf的shared_preload_libraries中增加pg_stat_statements來載入,因為它需要額外的共享內存。增加或移除該模塊需要將數據庫重啟。
當pg_stat_statements被載入時,它會跟蹤該服務器的所有數據庫的統計信息。該模塊提供了視圖pg_stat_statements以及函數pg_stat_statements_reset用于訪問和操縱這些統計信息。這些視圖和函數不是全局可用的,但是可以在指定數據庫創建該擴展。
創建extension模塊
postgres=# CREATE EXTENSION pg_stat_statements; CREATE EXTENSION |
修改數據庫PG_HOME下的postgresql.conf文件
shared_preload_libraries= pg_stat_statements
pg_stat_statements.max= 10000 #pg_stat_statements中記錄的最大的SQL條目數,默認為5000
pg_stat_statements.track= all#記錄pg_stat_statements中的
pg_stat_satements.saveon #用來控制數據庫在關閉的時候,是否將SQL信息保存到文件中。默認打開
pg_stat_satements.track_utilityon #追蹤SQL命令:DQLDDL 以及DQL,DDL以外的其他SQL命令(off只記錄DQLDDL)
如果沒有配置postgresql.conf文件中的shared_preload_libraries,那么將會提示如下報錯:
ERROR:pg_stat_statements must be loaded via shared_preload_libraries
使用pg_ctl重新啟動數據庫,使擴展生效。
pg_ctl start -D $PGDATA -l /tmp/pg_rotate_logfile() |
進入數據庫,查看pg_stat_statements視圖,有數據則安裝成功。
psql -U postgres -d pgtestdb select * from pg_stat_statements; |
該視圖的結構信息如下:
由于安全性原因,只有超級用戶和pg_read_all_stats角色的成員被允許看到其他用戶執行的查詢的SQL文本或者queryid。
log_min_duration_statement這個參數可以控制閾值的時間,如果查詢花費的時間長于此閾值時間,則會記錄該SQL。默認為1s。可以使用
ALTER SYSTEM SETlog_min_duration_statement = 1000;
更改閾值記錄,單位為ms。
我們可以在數據庫中看到平均運行時間最高的查詢,如下所示:
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; |
返回結果如下:
其中各項的涵義:
total_time:返回查詢的總運行時間(以毫秒為單位)。
min_time、avg_time和max_time:返回查詢的最小、平均和最大運行時間。
mean_time:使用total_time/調用返回查詢的平均運行時間(以毫秒為單位)。
Calls (調用):返回查詢運行的總數。
Rows(行數):返回由于查詢而返回或受影響的行總數。
Query(查詢):返回正在運行的查詢。默認情況下,最多顯示1024個查詢字節??梢允褂胻rack_activity_query_size參數更改此值。
pg_stat_statements所獲得的統計數據一直累積到重置。
可以使用以下腳本進行按天備份。
備份完成后可以通過具有超級用戶權限的用戶連接到數據庫以重置統計數據來運行重置:
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 "-----------------------------------------------------" |
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130094.html
摘要:作者譚峰張文升出版日期年月頁數頁定價元本書特色中國開源軟件推進聯盟分會特聘專家撰寫,國內多位開源數據庫專家鼎力推薦。張文升中國開源軟件推進聯盟分會核心成員之一。 很高興《PostgreSQL實戰》一書終于出版,本書大體上系統總結了筆者 PostgreSQL DBA 職業生涯的經驗總結,本書的另一位作者張文升擁有豐富的PostgreSQL運維經驗,目前就職于探探科技任首席PostgreS...
摘要:近日,正式發布了版本,該版本進行了大量的修復和功能改進。事實上,開發者獲得的所有標準會使它更加強大一個最好的例子是來自近年來的索引,它給提供了極大的性能提升。在最新發布的版本中,在中的輸出也更具可讀性。 【編者按】作為一款開源的對象—關系數據庫,Postgres 一直得到許多開發者喜愛。近日,Postgres 正式發布了9.5版本,該版本進行了大量的修復和功能改進。而本文將分享10個 ...
摘要:旨在記錄自己的學習過程,方便日后遇到問題是及時查閱復習,另一方面也希望能幫助像筆者一樣從來沒使用過的人快速熟悉。 這篇文章主要記錄的是本人學習使用IntelliJ IDEA的筆記,可能不是特別的詳細。旨在記錄自己的學習過程,方便日后遇到問題是及時查閱復習,另一方面也希望能幫助像筆者一樣從來沒使用過IDEA的人快速熟悉IDEA。文章錯誤之處還請各位大佬批評指正。(文末有本人的微信公眾號,...
摘要:上有主節點和從節點兩部分,兩者主要的功能是生成查詢計劃并派發,以及協調并行計算,同時在上保存著,這個全局目錄存著一組數據庫系統本身所具有的元數據的系統表。 前言:近年來,互聯網的快速發展積累了海量大數據,而在這些大數據的處理上,不同技術棧所具備的性能也有所不同,如何快速有效地處理這些龐大的數據倉,成為很多運營者為之苦惱的問題!隨著Greenplum的異軍突起,以往大數據倉庫所面臨的很多...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20