2011-12-21 18 views
19

我想監視從應用程序發送到我的數據庫的查詢。爲此,我發現pg_stat_activity,但更常見的情況是,返回的行是「在事務中」讀取的。我要麼做錯了什麼,我沒有足夠快的速度去查看查詢,難以理解,或者上述所有問題!應用程序實時監控PostgreSQL查詢?

有人可以推薦最笨蛋的方式來監視對PostgreSQL運行的查詢嗎?我更喜歡某種易於使用的基於UI的解決方案(例如:SQL Server的「Profiler」),但我不太挑剔。

回答

15

看看在PostgreSQL 8.4或更高版本可以使用的contrib模塊 收集數據庫服務器的查詢執行的統計數據。

運行此的contrib模塊pg_stat_statements.sql的SQL腳本(在Ubuntu它可以在/usr/share/postgresql/<version>/contrib找到)在你的數據庫,這樣的配置添加到您的postgresql.conf(需要重新啓動):

custom_variable_classes = 'pg_stat_statements' 
pg_stat_statements.max = 1000 
pg_stat_statements.track = top # top,all,none 
pg_stat_statements.save = off 

要查看哪些查詢是實時執行的,您可能只想配置服務器日誌以最少的執行時間顯示所有查詢或查詢。爲此,請在您的postgresql.conf中相應地設置logging configuration parameterslog_statementlog_min_duration_statement

+0

雖然這是一個很好的答案,它不包括一個會如何收集pg_stat_statements數據,因爲它不斷變化,並且只有關於查詢執行的累積統計信息。爲此,您可以使用https://pganalyze.com/或https://okmeter.io等工具來顯示有關查詢執行和性能的圖表和詳細信息。免責聲明 - 我爲okmeter工作。 – 2017-10-10 14:20:29

0

不幸的是,我還沒有嘗試過,但我認爲pgFouine可以顯示一些統計數據。

儘管它看起來並沒有實時向您顯示查詢,而是之後會生成一個查詢報告,也許它仍能滿足您的需求?

您可以在 http://pgfouine.projects.postgresql.org/

22

PgAdmin提供了一個非常容易使用的工具,稱爲服務器監控

(工具 - > ServerStatus)

+4

這個工具似乎已經消失在PgAdmin 4中。 – Lasf 2017-05-14 19:55:43

+0

@Lasf - 同意...任何想法,爲什麼這是消失? – 2018-02-23 19:33:16