我想監視從應用程序發送到我的數據庫的查詢。爲此,我發現pg_stat_activity
,但更常見的情況是,返回的行是「在事務中」讀取的。我要麼做錯了什麼,我沒有足夠快的速度去查看查詢,難以理解,或者上述所有問題!應用程序實時監控PostgreSQL查詢?
有人可以推薦最笨蛋的方式來監視對PostgreSQL運行的查詢嗎?我更喜歡某種易於使用的基於UI的解決方案(例如:SQL Server的「Profiler」),但我不太挑剔。
我想監視從應用程序發送到我的數據庫的查詢。爲此,我發現pg_stat_activity
,但更常見的情況是,返回的行是「在事務中」讀取的。我要麼做錯了什麼,我沒有足夠快的速度去查看查詢,難以理解,或者上述所有問題!應用程序實時監控PostgreSQL查詢?
有人可以推薦最笨蛋的方式來監視對PostgreSQL運行的查詢嗎?我更喜歡某種易於使用的基於UI的解決方案(例如:SQL Server的「Profiler」),但我不太挑剔。
看看在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_statement
和log_min_duration_statement
。
不幸的是,我還沒有嘗試過,但我認爲pgFouine可以顯示一些統計數據。
儘管它看起來並沒有實時向您顯示查詢,而是之後會生成一個查詢報告,也許它仍能滿足您的需求?
雖然這是一個很好的答案,它不包括一個會如何收集pg_stat_statements數據,因爲它不斷變化,並且只有關於查詢執行的累積統計信息。爲此,您可以使用https://pganalyze.com/或https://okmeter.io等工具來顯示有關查詢執行和性能的圖表和詳細信息。免責聲明 - 我爲okmeter工作。 – 2017-10-10 14:20:29