2011-02-08 53 views
6

我試圖改善長時間運行的plpgsql存儲過程的性能,但我不知道有什麼(如果有的話)分析工具可用。任何人都可以提供關於如何進行分析這樣的程序的建議嗎?如何配置plpgsql程序

回答

5

從包含clock_timestamp()的程序中提取一些notices以查看數據庫在何處花費時間。儘可能簡化程序。

你能告訴我們一個例子嗎?

+0

我希望有一種方法不需要改變程序,但是這可能比沒有好。 http://www.depesz.com/index.php/2010/03/18/profiling-stored-proceduresfunctions/記錄了一個類似的程序,但是獲得可用數據似乎過於複雜。該過程是一組用於爲Solr數據導入處理程序查詢創建文檔的嵌套循環,如果這有助於任何(可能不是)。 – Aneurysm9 2011-02-08 17:15:40

1

首先,您可以打開logging of all statements到Postgres日誌文件中。日誌將包含每個語句的運行時間。這樣您可以識別最慢的查詢並嘗試優化它們。

但讀你的評論弗蘭克的帖子我猜測循環是你的問題。嘗試擺脫循環,並在單個查詢中做所有事情。讀取大量行的一條語句通常比僅讀取幾行的很多語句更有效。