vacuumdb
名稱
vacuumdb ― 清理和分析一個(gè) Postgres 數(shù)據(jù)庫(kù)
語(yǔ)法
vacuumdb [ options ] [ --analyze | -z ]
[ --alldb | -a ] [ --verbose | -v ]
[ --table 'table [ ( column [,...] ) ]' ] [ [-d] dbname ]
輸入
vacuumdb 接受下列命令行參數(shù):
-d dbname, --dbname dbname
聲明要被清理或分析的數(shù)據(jù)庫(kù)名稱。
-z, --analyze
計(jì)算用于優(yōu)化器的該數(shù)據(jù)庫(kù)的統(tǒng)計(jì)值。
-a, --alldb
清理所有數(shù)據(jù)庫(kù)。
-v, --verbose
在處理過(guò)程中打印詳細(xì)信息。
-t table [ (column [,...]) ], --table table [ (column [,...]) ]
只是清理或分析 table。列名稱只是在與--analyze 選項(xiàng)聯(lián)合使用時(shí)才需要聲明。
小技巧:如果你聲明了要清理的列,你可能不得不在 shell 上轉(zhuǎn)意圓括號(hào)。
vacuumdb 還接受下面的命令行參數(shù)用于聯(lián)接參數(shù):
-h host, --host host
聲明 postmaster 運(yùn)行的機(jī)器的主機(jī)名.
-p port, --port port
聲明 postmaster 在偵聽(tīng)聯(lián)接的TCP/IP 端口號(hào)或一個(gè)本地的Unix主控套接字文件句柄.
-U username, --username username
進(jìn)行聯(lián)接的用戶名。
-W, --password
強(qiáng)制口令提示符。
-e, --echo
回顯 vacuumdb 生成的查詢并且把它發(fā)送到后端。
-q, --quiet
不顯示響應(yīng)。
輸出
VACUUM
一切正常。
vacuumdb: Vacuum failed.
出差錯(cuò)了。vacuumdb 只是一個(gè)腳本的封裝。參閱 VACUUM 和 psql 獲取關(guān)于錯(cuò)誤信息和可能問(wèn)題的詳細(xì)描述。
描述
vacuumdb 是一個(gè)用于整理 PostgreSQL 數(shù)據(jù)庫(kù)的工具。vacuumdb 還將會(huì)生成用于 Postgres 查詢優(yōu)化器的內(nèi)部統(tǒng)計(jì)數(shù)據(jù)。
vacuumdb 是一個(gè) shell 腳本,通過(guò) PostgreSQL 交互終端 psql 封裝了SQL 命令 VACUUM 。因此,用那種方法清理數(shù)據(jù)庫(kù)都沒(méi)什么特別的。這意味著psql 必須能被腳本找到并且有一個(gè)數(shù)據(jù)庫(kù)服務(wù)器在目標(biāo)主機(jī)上運(yùn)行。同樣,任何psql 和 libpq 前端庫(kù)可獲得的缺省設(shè)置和環(huán)境變量都將生效。
用法
整理數(shù)據(jù)庫(kù) test:
$ vacuumdb test
為優(yōu)化器分析一個(gè)名為 bigdb 的數(shù)據(jù)庫(kù):
$ vacuumdb --analyze bigdb
為優(yōu)化器分析數(shù)據(jù)庫(kù) xyzzy 里表 foo 里面的列 bar:
$ vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy