Postgresql 中文操作指南

clusterdb

clusterdb — 集群一个 PostgreSQL 数据库

Synopsis

clusterdb [ connection-option …​] [ —​verbose | -v ] [ —​table | -t table ] …​ [ dbname ]

clusterdb [ connection-option …​] [ —​verbose | -v ] —​all | -a

Description

clusterdb 是用于在 PostgreSQL 数据库中重新对表进行集群的实用程序。它找到先前已进行集群的表,然后使用上次使用的相同索引再次对它们进行集群。从未进行过集群的表不会受到影响。

clusterdb 是用于 SQL 命令 CLUSTER 的包装器。通过此实用程序对数据库进行集群与通过其他服务器访问方法进行集群之间没有有效差异。

Options

clusterdb 接受以下命令行参数:

  • -a_—​all_

    • Cluster all databases.

  • [-d] _dbname[--dbname=]_dbname

    • -a / —​all 未使用时指定要集群的数据库的名称。如果未指定该名称,数据库名称将从环境变量 PGDATABASE 中读取。如果未设置该环境变量,则使用为连接指定的用户名。 dbname 可以是 connection string 。如果是,连接字符串参数将覆盖所有冲突的命令行选项。

  • -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 。该名称可以是 connection string 。如果是,连接字符串参数将覆盖所有冲突的命令行选项。此外,在连接至其他数据库时,将重新使用除了数据库名称之外的所有连接字符串参数。

Environment

  • PGDATABASE_PGHOST_PGPORT__PGUSER

    • Default connection parameters

  • PG_COLOR

    • 指定是否在诊断消息中使用颜色。可能的值为 alwaysautonever

此实用程序与大多数其他 PostgreSQL 实用程序一样,还使用 libpq 支持的环境变量(请参阅 Section 34.15 )。

Diagnostics

如果遇到困难,请参阅 CLUSTERpsql 以了解潜在问题和错误消息的讨论。数据库服务器必须在目标主机上运行。此外,libpq 前端库使用的所有默认连接设置和环境变量都将适用。

Examples

要对数据库 test 进行集群:

$ clusterdb test

要在名为 xyzzy 的数据库中对单个表 foo 进行集群:

$ clusterdb --table=foo xyzzy

See Also