是否有可能獲得在postgres中查詢的歷史記錄?是否有可能獲得每個查詢花費的時間?我目前正試圖在正在處理的應用程序中識別緩慢的查詢。是否有可能獲得在postgres中查詢的歷史
我使用的Postgres 8.3.5
是否有可能獲得在postgres中查詢的歷史記錄?是否有可能獲得每個查詢花費的時間?我目前正試圖在正在處理的應用程序中識別緩慢的查詢。是否有可能獲得在postgres中查詢的歷史
我使用的Postgres 8.3.5
有在數據庫本身沒有歷史,如果你使用psql裏,你可以使用「\ S」看到你的命令歷史記錄那裏。
您可以通過在postgresql.conf文件中設置log_statement來將日後的查詢或其他類型的操作獲取到日誌文件中。您可能想要的是log_min_duration_statement,如果將其設置爲0,則會將所有查詢及其持續時間記錄在日誌中。一旦您的應用程序啓用後,這可能會有所幫助,如果將其設置爲更高的值,則只會看到有助於優化的長時間運行查詢(您可以對查找的查詢運行EXPLAIN ANALYZE來找出原因'慢')。
在這個領域另一個需要了解的方面是,如果你運行psql並告訴它「\ timing」,它將顯示在這之後每個語句需要多長時間。所以,如果你有一個SQL文件看起來像這樣:
\timing
select 1;
您可以用正確的標誌運行它,看看交錯帶過了多長時間每條語句。以下是如何和什麼樣的結果是這樣的:
$ psql -ef test.sql
Timing is on.
select 1;
?column?
----------
1
(1 row)
Time: 1.196 ms
這是方便,因爲你不需要是數據庫超級用戶才能使用它,不像更改配置文件,它是更容易,如果您正在開發新的使用代碼並且想要測試它。
如果你想識別慢查詢,那麼的方法是使用log_min_duration_statement設置(在postgresql.conf中或使用ALTER DATABASE SET設置每個數據庫)。
當您記錄數據時,您可以使用grep或一些專門的工具 - 如pgFouine或我自己的analyzer--它缺少適當的文檔,但儘管如此 - 運行得非常好。
pgBadger是另一種選擇 - 在這裏還列出:https://github.com/dhamaniasad/awesome-postgres#utilities
需要一些額外的設置提前捕捉到的Postgres必要的數據記錄,雖然,請見官網。
僅供參考使用UINavicat那些:
必須設置你的喜好,利用文件爲where
存儲歷史。
如果這是空白,你的Navicat將會是空白的。
PS:我沒有從屬關係或關聯的Navicat或它的分支機構。只是想幫忙。
我回滾標籤更改,因爲這不是一個特定於SQL的問題。 – 2009-10-06 04:07:05
查看http://stackoverflow.com/questions/722221/how-to-log-postgres-sql-queries – 2014-07-08 20:16:05