clusterdb — 集群一个 PostgreSQL 数据库
clusterdb
[connection-option
...][option
...][ --table
| -t
table
] ... [ dbname
| -a
| --all
]
clusterdb 是一个用于重新对 PostgreSQL 数据库中的表进行集群的实用程序。它会找到之前已进行集群的表,并针对上一次使用的相同索引重新为其进行集群。尚未进行过集群的表不会受到影响。
clusterdb 是 SQL 命令 CLUSTER 的包装器。通过此实用程序对数据库进行集群与通过访问服务器的其他方法进行集群之间没有实际差异。
clusterdb 接受以下命令行参数
-a
--all
对所有数据库进行集群。
[-d] dbname
[--dbname=]dbname
当未用 -a
/--all
时,指定要进行集群的数据库的名称。如果未指定,则从环境变量 PGDATABASE
中读取数据库名称。如果未设置该环境变量,则使用为该连接指定的用户名。dbname
可以是 连接字符串。如果为连接字符串,则连接字符串参数会覆盖任何有冲突的命令行选项。
-e
--echo
打印 clusterdb 生成并发送到服务器的命令。
-q
--quiet
不显示进度消息。
-t table
--table=table
仅对 table
进行集群。可以通过编写多个 -t
开关来对多张表进行集群。
-v
--verbose
在处理过程中打印详细信息。
-V
--version
打印 clusterdb 版本并退出。
-?
--help
显示 clusterdb 命令行参数的幫助,並退出。
clusterdb 還接受以下命令行參數用於連接參數
-h host
--host=host
指定運行服務器的計算機的主機名稱。如果值以斜槓開頭,則將其用作 Unix 域套接字的目錄。
-p port
--port=port
指定服務器監聽連接的 TCP 端口或本地 Unix 域套接字文件擴展名。
-U username
--username=username
連接時使用的用戶名。
-w
--no-password
從不發出密碼提示。如果服務器需要密碼驗證且無法通過其他方式(例如 .pgpass
文件)獲取密碼,則連接嘗試將失敗。此選項在沒有用戶輸入密碼的批處理作業和腳本中很有用。
-W
--password
強制 clusterdb 在連接到數據庫之前提示輸入密碼。
此選項從不必要,因為如果服務器要求密碼驗證,clusterdb 將自動提示輸入密碼。但是,clusterdb 將浪費一次連接嘗試來找出服務器是否需要密碼。在某些情況下,輸入 -W
以避免額外的連接嘗試是值得的。
--maintenance-db=dbname
使用 -a
/--all
時,指定要連接的用於發現應集群哪些數據庫的數據庫的名稱。如果未指定,將使用 postgres
數據庫,如果不存在,將使用 template1
。這可以是 連接字符串。如果是這樣,則連接字符串參數將覆蓋任何衝突的命令行選項。此外,連接到其他數據庫時將重用除數據庫名稱本身以外的其他連接字符串參數。
PGDATABASE
PGHOST
PGPORT
PGUSER
默认连接参数
PG_COLOR
指定在诊断消息中是否使用颜色。可能的值为 always
、auto
和 never
。
除了 libpq 支持的环境变量(参见 第 32.15 节)之外,此实用程序(就像大多数其他的 PostgreSQL 实用程序)也会使用该环境变量。
要对数据库 test
进行集群
$
clusterdb test
要在名为 xyzzy
的数据库中对单个表 foo
进行集群
$
clusterdb --table=foo xyzzy