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
指定是否在診斷訊息中使用顏色。可能的值為 always
、auto
和 never
。
與大多數其他 PostgreSQL 工具程式一樣,此工具程式也使用 libpq 支援的環境變數 (請參閱 第 32.15 節)。
清理資料庫 test
$
vacuumdb test
為了最佳化器,清理和分析名為 bigdb
的資料庫
$
vacuumdb --analyze bigdb
清理名為 xyzzy
的資料庫中的單個表格 foo
,並為了最佳化器分析該表格的單個欄位 bar
$
vacuumdb --analyze --verbose --table='foo(bar)' xyzzy
清理名為 xyzzy
的資料庫中 foo
和 bar
綱要中的所有表格
$
vacuumdb --schema='foo' --schema='bar' xyzzy
如果您在文件中發現任何不正確的地方、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單回報文件問題。