2011-11-21 180 views
32

我在我的計算機上有一個PostgreSQL數據庫,並且我有一個應用程序在其上運行查詢。PostgreSQL如何查看哪些查詢已經運行

如何查看哪些查詢在我的數據庫上運行?

我使用Linux計算機和pgadmin。

+0

有關您的應用程序是什麼樣子以及它如何訪問數據庫的任何細節? –

回答

39

打開服務器日誌:

log_statement = all 

這將記錄每次調用數據庫服務器。

我不會在生產性服務器上使用log_statement = all。生成巨大的日誌文件。
The manual about logging-parameters:

log_statementenum),該SQL語句被記錄

控件。有效值爲none(關閉),ddl,modall(所有語句)。 [...]

重置log_statement參數需要服務器重載(SIGHUP)。重新啓動是而不是必要的。閱讀the manual on how to set parameters

請勿將服務器日誌與pgAdmin日誌混淆。兩件不同的事情!

如果您有權訪問這些文件(對於遠程服務器可能不是這種情況)並且正確設置,您還可以查看pgAdmin中的服務器日誌文件。看看:Tools -> Server status。詳細瞭解manual for pgAdmin III中的服務器狀態窗口。

我更喜歡用vim(或您選擇的編輯器/閱讀器)閱讀服務器日誌文件。有關測井技術

日誌存儲在Installationfolder /數據/ pg_log文件夾時

+0

Brandstetter我只會看到日誌並關閉它。僅僅是爲了使log_statement = all就足夠了?我已經打開服務器狀態,它詢問我有關安裝軟件包的一些信息,但它打開了一個窗口並寫道:此服務器不支持日誌。我應該重新啓動我的postgresql嗎? – kamaci

+2

@kamaci:我用附加信息修改了我的答案。按照我提供的更多鏈接。 –

30

PostgreSQL是非常先進的。日誌設置被放置在postgresql.conf文件中。

日誌格式通常設置爲stderr。但建議使用CSV日誌格式。爲了使在

  • log_destination = '標準錯誤,csvlog'
  • logging_collector CSV格式變化=上

爲了記錄所有的查詢,對於新安裝,設置分非常有用。執行時間查詢

  • log_min_duration_statement = 0

爲了查看數據庫的主動查詢,使用

  • SELECT * FROM和pg_stat_activity

要記錄特定查詢設置查詢類型

  • log_statement = '所有' #無,DDL,國防部,所有

這是一個很好的鏈接有關記錄的詳細信息的查詢

2

我發現日誌文件位於/usr/local/var/log/postgres.log中,位於brew安裝的mac上。