2010-03-16 48 views
2

我有一個Postgres實例構建一個GIN索引。它看着約20萬行,到目前爲止大約需要9個小時。誰知道最終需要多久?問題在於,當我希望使用更多的90%時,它使用了大約2%的CPU。有什麼辦法可以強制它加速嗎?Postgres在索引編譯期間沒有使用足夠的CPU!

+0

你確定性能是受CPU限制的嗎? – jball 2010-03-16 21:09:42

+0

不,我不確定。我只是對它沒有使用的CPU數量感到驚訝。整個表的轉儲達到130 MB。它使用了2.6%的CPU和2.7%的RAM,每個備件都足夠了。 – Joe 2010-03-16 21:13:15

+1

您是否爲maintenance_work_mem設置了適當數量的RAM?編輯:沒有鎖阻止索引的製作? – 2010-03-16 21:16:43

回答

2

主要的瓶頸可能是磁盤IO而不是CPU。

如果你在Windows機器上,你可以使用Process Explorer(免費軟件)來檢查磁盤IO,如果在Unix上,使用iostat,sar,DTrace(在一段時間內沒有完成後者,所以不能100%確定最好的工具)

+0

Windows上的資源監視器也顯示了這一點,您通常可以很容易地看到機器當前是否受CPU限制或通過IO。 – Joey 2010-03-16 21:14:47

+0

謝謝!我在unix(Linux和Mac)上。我會看看選項。 – Joe 2010-03-16 21:51:02

+1

我認爲這是由於尋呼,導致顛簸。答案是通過'set maintenance_work_mem = 102400;'增加工作內存。 – Joe 2010-03-24 11:33:57