支援的版本: 目前 (17) / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

vacuumdb

vacuumdb — 垃圾收集和分析 PostgreSQL 資料庫

概要

vacuumdb [連線選項...] [選項...] [ -t | --table 資料表 [( 欄位 [,...] )] ] ... [ 資料庫名稱 | -a | --all ]

vacuumdb [連線選項...] [選項...] [ -n | --schema 綱要 ] ... [ 資料庫名稱 | -a | --all ]

vacuumdb [連線選項...] [選項...] [ -N | --exclude-schema 綱要 ] ... [ 資料庫名稱 | -a | --all ]

描述

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

vacuumdb 是 SQL 命令 VACUUM 的包裝函式。透過此工具以及透過其他存取伺服器的方法來 vacuum 和分析資料庫,實際上沒有任何差異。

選項

vacuumdb 接受以下命令列引數

-a
--all

Vacuum 所有資料庫。

--buffer-usage-limit 大小

指定給定 vacuumdb 呼叫的緩衝區存取策略環形緩衝區大小。此大小用於計算將作為此策略一部分重複使用的共用緩衝區數量。請參閱 VACUUM

[-d] 資料庫名稱
[--dbname=]資料庫名稱

指定要清理或分析的資料庫名稱,當未使用 -a/--all 時。如果未指定,則從環境變數 PGDATABASE 讀取資料庫名稱。如果未設定,則使用為連線指定的的使用者名稱。資料庫名稱 可以是連線字串。如果是這樣,連線字串參數將覆寫任何衝突的命令列選項。

--disable-page-skipping

停用基於可見性圖內容跳過頁面。

-e
--echo

Echo vacuumdb 產生並傳送到伺服器的命令。

-f
--full

執行 完整 的 vacuum。

-F
--freeze

積極地 凍結 元組。

--force-index-cleanup

總是移除指向死亡元組的索引條目。

-j njobs
--jobs=njobs

透過同時執行 njobs 個命令來並行執行 vacuum 或分析命令。此選項可能會減少處理時間,但也會增加資料庫伺服器的負載。

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

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

--min-mxid-age mxid_age

僅對 multixact ID 年齡至少為 mxid_age 的表格執行 vacuum 或 analyze 指令。此設定對於優先處理表格以防止 multixact ID 回繞很有用(請參閱第 24.1.5.1 節)。

就此選項而言,關聯的 multixact ID 年齡是主關聯及其關聯的TOAST表格(如果存在)的最大年齡。由於 vacuumdb 發出的指令也會處理TOAST關係的表格(如有必要),因此無需單獨考慮。

--min-xid-age xid_age

僅對交易 ID 年齡至少為 xid_age 的表格執行 vacuum 或 analyze 指令。此設定對於優先處理表格以防止交易 ID 回繞很有用(請參閱第 24.1.5 節)。

就此選項而言,關係的交易 ID 年齡是主關係及其關聯的TOAST表格(如果存在)的最大年齡。由於 vacuumdb 發出的指令也會處理TOAST關係的表格(如有必要),因此無需單獨考慮。

-n schema
--schema=schema

僅清理或分析 schema 中的所有表格。 可以透過寫入多個 -n 切換器來 vacuum 多個 schema。

-N schema
--exclude-schema=schema

不要清理或分析 schema 中的任何表格。 可以透過寫入多個 -N 切換器來排除多個 schema。

--no-index-cleanup

不要移除指向無效 tuple 的索引項目。

--no-process-main

跳過主關係。

--no-process-toast

跳過與要 vacuum 的表格相關聯的 TOAST 表格(如果有的話)。

--no-truncate

不要截斷表格末尾的空白頁面。

-P parallel_workers
--parallel=parallel_workers

指定平行 vacuum 的平行工作程序數量。 這允許 vacuum 利用多個 CPU 來處理索引。 請參閱VACUUM

-q
--quiet

不要顯示進度訊息。

--skip-locked

跳過無法立即鎖定以進行處理的關係。

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

僅清理或分析 table。 只能與 --analyze--analyze-only 選項一起指定欄位名稱。 可以透過寫入多個 -t 切換器來 vacuum 多個表格。

提示

如果您指定欄位,則可能需要從 shell 中逸出括號。 (請參閱以下範例。)

-v
--verbose

在處理期間列印詳細資訊。

-V
--version

列印 vacuumdb 版本並退出。

-z
--analyze

也計算統計資料供最佳化工具使用。

-Z
--analyze-only

僅計算統計資料供最佳化工具使用(無 vacuum)。

--analyze-in-stages

僅計算統計資料供最佳化工具使用(無 vacuum),如 --analyze-only。 執行分析的三個階段; 第一階段使用盡可能低的統計資料目標(請參閱default_statistics_target)以更快地產生可用的統計資料,後續階段建立完整的統計資料。

此選項僅適用於分析目前沒有統計資料或統計資料完全不正確的資料庫,例如從還原的傾印或由 pg_upgrade 重新填入的資料庫。 請注意,在具有現有統計資料的資料庫中使用此選項可能會導致查詢最佳化工具的選擇因早期階段的低統計資料目標而暫時變差。

-?
--help

顯示有關 vacuumdb 命令列引數的說明並退出。

vacuumdb 也接受以下命令列引數作為連線參數

-h host
--host=host

指定伺服器執行的機器的主機名稱。 如果該值以斜線開頭,則將其用作 Unix 域套接字的目錄。

-p port
--port=port

指定伺服器正在監聽連線的 TCP 連接埠或本機 Unix 域套接字檔案副檔名。

-U username
--username=username

要連線的使用者名稱。

-w
--no-password

永遠不要發出密碼提示。 如果伺服器需要密碼驗證,並且沒有其他方法(例如 .pgpass 檔案)可以使用密碼,則連線嘗試將失敗。 在批次作業和沒有使用者輸入密碼的腳本中,此選項非常有用。

-W
--password

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

此選項並非總是必要的,因為如果伺服器需要密碼驗證,vacuumdb 將自動提示輸入密碼。 但是,vacuumdb 會浪費一次連線嘗試來找出伺服器是否需要密碼。 在某些情況下,值得輸入 -W 以避免額外的連線嘗試。

--maintenance-db=dbname

指定當使用 -a/--all 時,用來連接以發現哪些資料庫應該進行清理的資料庫名稱。如果未指定,將使用 postgres 資料庫,如果該資料庫不存在,則將使用 template1。這可以是一個 連線字串。如果是這樣,連線字串參數將覆蓋任何衝突的命令列選項。此外,除了資料庫名稱本身之外的連線字串參數,在連接到其他資料庫時將會重複使用。

環境變數

PGDATABASE
PGHOST
PGPORT
PGUSER

預設連線參數

PG_COLOR

指定是否在診斷訊息中使用顏色。可能的值為 alwaysautonever

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

診斷

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

範例

清理資料庫 test

$ vacuumdb test

為了最佳化器,清理和分析名為 bigdb 的資料庫

$ vacuumdb --analyze bigdb

清理名為 xyzzy 的資料庫中的單個表格 foo,並為了最佳化器分析該表格的單個欄位 bar

$ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy

清理名為 xyzzy 的資料庫中 foobar 綱要中的所有表格

$ vacuumdb --schema='foo' --schema='bar' xyzzy

參見

VACUUM

提交更正

如果您在文件中發現任何不正確的地方、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單回報文件問題。