2007-03-29

PostgreSQL 推薦手動 VACUUM 的時機與目的

更新:2007-03-29
對映章節:

內容:
PostgreSQL 在 8.1 版後雖然加上了自動執行空間清理與回收機制(autovacuum).
減少 DBA 去定期手動執行 VACUUM 的過程, 但有時我們可能更想更快反映這效果, 這時就必須以手動執行的方式來達到目的.

推薦運行 VACUUM

在 pgAdmin III 提供了一個很易觀察當前是否應進行手動 VACUUM 的判斷, 在下圖右邊的黃體標示區預測值:"資料列數(已估算)"與實際值:"資料列數(已計數)", 二個值若產生嚴重偏離實際行數, 就應該在這個資料表上運行 VACUUM ANALYZE

除了手動運行 VACUUM ANALYZE 命令(也可以利用 pgAdminIII 的「維護」選單來做)之外,還應該考慮定期有規律或者自動地運行 VACUUM ANALYZE (8.1 版後預設值是已啟用)。使用排程程序也可以做到這一點,另外 PostgreSQL 也提供了一個叫做 pg_autovacuum 的後端程序,能夠跟蹤資料庫的變化並在適當時刻自動調用 vacuum 命令。在大多數情況下,pg_autovacuum 是最好的選擇。

(點圖可放大)


pgAdmin III 工作排程代理員:


VACUUM 有什麼好處?

PostgreSQL 的查詢計劃根據預測行數做出決定,如果實際行數與預測行數有太大差異,可能會作出錯誤判斷,造成查詢計劃不是最優化的,導致執行效率過低。

PostgreSQL 資料庫需要 VACUUM 修復表中的事務交易 ID。另外,由於更新和刪除操作而產生的過時資料直到在這個表上運行 VACUUM 命令才會被清理。按下 pgAdmin III VACUUM 介面中的 [幫助/說明] 按鈕,可以從線上文檔中看到更詳細資訊。

延伸閱讀(Link):

沒有留言:

網誌存檔

PostgreSQL & Google-Analytics Running...

::Planet PostgreSQL::

PostgreSQL Information Page

PostgreSQL日記(日本 石井達夫先生Blog)

PostgreSQL News

黑喵的家 - 資料庫相關

Google 網上論壇
PostgreSQL 8 DBA 專業指南中文版
書籍內容討論與更多下載區(造訪此群組)
目錄下載: PostgreSQL_8 _DBA_Index_zh_TW.pdf (更新:2007-05-18)

全球訪客分佈圖(Google)

全球訪客分佈圖(Google)