For the complete documentation index, see llms.txt. This page is also available as Markdown.

vacuumdb

vacuumdb — 資源回收並重新分析 PostgreSQL 資料庫

語法

vacuumdb [connection-option...] [option...] [ --table | -t table [( column [,...] )] ] ... [dbname]

vacuumdb [connection-option...] [option...] --all | -a

說明

vacuumdb 是一個用於清理 PostgreSQL 資料庫的工具程式。vacuumdb 也會產生 PostgreSQL 查詢最佳化程式所使用的內部統計資訊。

vacuumdb 只是一個將 SQL 指令 VACUUM 封裝起來的工具。透過此工具與透過其他方法存取伺服器之間,對資料庫進行清理和分析的工作並沒有任何區別。

選項參數

vacuumdb 接受以下的命令列參數:

-a --all

清理所有資料庫。

[-d] dbname [--dbname=]dbname

指定要清理或分析的資料庫名稱。如果未指定,也未使用 -a(或--all),則從環境變數 PGDATABASE 中取得資料庫名稱。如果都未設定,則使用此連線所使用的使用者名稱。

-e --echo

顯示 vacuumdb 產生並發送到伺服器的指令。

-f --full

執行「完全」清理。

-F --freeze

積極地「凍結」資料 tuple。

-j njobs --jobs=njobs

透過同時執行 njobs 指令平行執行 vacuum 或 analyze 指令。此選項可以縮短處理時間,但也會增加資料庫伺服器的負載。

vacuumdb 將打開與資料庫的 njobs 連線,因此請確保您的 max_connections 設定夠高以容納所有連線。

請注意,如果平行處理某些系統目錄,則此選項與 -f(FULL)選項一起使用可能會導致鎖死而失敗。

-q --quiet

不顯示進度訊息。

-t table [ (column [,...]) ] --table=table [ (column [,...]) ]

僅清理或分析資料表。欄位名稱只能與 --analyze 或 --analyze-only 選項一起指定。以多個選項開關可以對多個資料表進行清理。

小技巧

如果指定欄位,則可能必須從 shell 中跳脫括號。 (請參閱下面的例子。)

-v --verbose

處理期間輸出詳細訊息。

V --version

輸出 vacuumdb 版本後結束。

-z --analyze

同時計算最佳化程序所使用的統計資訊。

-Z --analyze-only

僅計算最佳化程序所使用的統計資訊(不做清理)。

--analyze-in-stages

僅計算最佳化程序所使用的統計資訊(不做清理),如同 --analyze-only。使用不同的設定執行幾個(目前是三個)分析階段,以更快地產可用的統計資訊。

此選項對於分析從還原備份或 pg_upgrade 新加入的資料庫非常有用。此選項將嘗試盡可能更快地建立一些統計資訊,使資料庫可用,然後在後續階段產生更完整的統計資訊。

-? --help

顯示有關 vacuumdb 命令列參數的說明,然後結束。

vacuumdb 也在命令列中接受以下連線參數:

-h host --host=host

指定執行伺服器的主機名稱。如果以斜線開頭,則將其用作 Unix domain socket 的目錄。

-p port --port=port

指定伺服器正在監聽連線的 TCP 連接埠或本地 Unix domain socket 檔案的延伸名稱。

-U username --username=username

要連線的使用者名稱。

-w --no-password

不要發出密碼提示。如果伺服器需要密碼身份驗證,而其他方式(例如 .pgpass 檔案)無法使用密碼,則連線嘗試將會失敗。此選項在沒有使用者輸入密碼的批次處理作業腳本中非常有用。

-W --password

強制 vacuumdb 在連線到資料庫之前提示輸入密碼。

此選項並不是必要的,因為如果伺服器需要密碼驗證,vacuumdb 將自動提示輸入密碼。只是,vacuumdb 會浪費連線嘗試,才能發現伺服器需要密碼。在某些情況下,值得輸入 -W 以避免額外的連線嘗試。

--maintenance-db=dbname

指定要連線的資料庫名稱,以發現應該清理哪些其他資料庫。如果未指定,將使用 postgres 資料庫,如果 postgres 不存在的話,將使用 template1。

執行環境

PGDATABASE PGHOST PGPORT PGUSER

預設連線參數

與大多數其他 PostgreSQL 工具程式一樣,此工具也使用 libpq 所支援的環境變數(請參閱第 34.14 節)。

問題分析

如果遇到困難,請參閱 VACUUM 和 psql 以了解潛在問題和錯誤訊息。資料庫伺服器必須在目標主機上執行。此外,將套用 libpq 前端函式庫使用的所有預設連線設定和環境變數。

注意

vacuumdb 可能需要多次連線到 PostgreSQL 伺服器,而每次都會要求輸入密碼。在這種情況下,有一個 ~/.pgpass 檔案的話會很方便。有關更多訊息,請參閱第 34.15 節。

範例

要清理資料庫 test:

為最佳化程序清理並分析名為 bigdb 的資料庫:

要清理 xyzzy 資料庫中的資料表 foo,並為最佳化程序分析資料表的單個欄位:

參閱

VACUUM

Last updated

Was this helpful?