clusterdb

名称

clusterdb -- 群集一个PostgreSQL数据库

大纲

clusterdb [connection-option...] [--verbose | -v] [ --table | -t table ] ... [dbname]

clusterdb [connection-option...] [--verbose | -v] --all | -a

描述

clusterdb用于对数据库中的表进行重新群集。 它寻找以前群集过的表,然后在上次用过的同一个索引上再次群集。 它不会动那些从未群集的表。

clusterdb是对 SQL 命令CLUSTER的封装。 使用这两种方法对数据库群集实际上没有任何区别。

选项

clusterdb接受下列命令行参数:

-a
--all

对所有数据库进行群集

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

声明要群集的数据库名字。如果没有声明这个并且没有使用-a--all,那么数据库名从环境变量PGDATABASE中读取。 如果这个环境变量也没有设置,那么使用用于连接的用户名。

-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

声明要连接的数据库名,以发现其他应该被群集的数据库。如果没有指定, 将使用postgres数据库,如果postgres不存在, 则使用template1

环境变量

PGDATABASE
PGHOST
PGPORT
PGUSER

缺省连接参数

这个功用,类似大多数其他PostgreSQL实用工具, 也使用由libpq支持的环境变量(参阅第 31.14 节)。

诊断

出现困难的时候,参阅CLUSTERpsql 获取有关可能的错误和错误消息的讨论。数据库服务器必须在目标主机上运行。同样, 任何缺省连接设置和libpq前端库使用的环境变量都将得以应用。

例子

对数据库test进行群集:

$ clusterdb test

xyzzy数据库里的foo表进行群集:

$ clusterdb --table foo xyzzy

又见

CLUSTER