vacuumdb
vacuumdb¶
垃圾收集并分析数据库。
- 语法
-
``` bash vacuumdb [connection-option…] [–full | -f] [–freeze | -F] [–verbose | -v] [–analyze | -z] [–analyze-only | -Z] [–table | -t table [( column [,…] )] ] [dbname]
vacuumdb [connection-option…] [–all | -a] [–full | -f] [-F] [–verbose | -v] [–analyze | -z] [–analyze-only | -Z]
vacuumdb -? | –help
vacuumdb -V | –version ```
- 描述
-
vacuumdb
是用于清理SeaboxMPP数据库的工具。vacuumdb
还将生成SeaboxMPP数据库查询优化器使用的内部统计信息。vacuumdb
是SQL命令VACUUM
的封装。 通过此工具和通过其他访问服务器的方法来清理数据库之间没有明显的区别。 - 选项
-
该命令选项说明见下
- -a | –all
- 清理所有数据库。
[-d]
dbname
|[--dbname=]``dbname
- 要清理的数据库的名称。 如果未指定此选项,并且未使用
-a
(或--all
),则从环境变量SDDATABASE读取数据库名称。如果未设置,则使用为连接指定的用户名。 - -e | –echo
- 回显vacuumdb生成并发送到服务器的命令。
- -f | –full
-
选择完全清理,这可以回收更多空间,但是需要更长的时间并排他锁定表。
- 警告: 在SeaboxMPP数据库中不建议使用
VACUUM FULL
。 -j | –jobs : 使用这个参数来指定需要多少个并发的连接
- 警告: 在SeaboxMPP数据库中不建议使用
- –min-mxid-age=MXID_AGE |
- 设置 multixact ID 的最小值
- –min-xid-age=XID_AGE |
- 设置 transaction ID 的最小值
- -F | –freeze
- 冻结行事务信息。
- -q | –quiet
- 不显示响应。
- -t
table
[(column
)] | –table=table
[(column
)] - 仅清理或分析该表。 只能与
--analyze
或--analyze-all
选项一起指定列名。可以通过写入多个-t
开关来清理多个表。如果指定列,则可能必须从shell转义括号。 - -v | –verbose
- 在处理过程中打印详细信息。
- -z | –analyze
- 收集统计信息以供查询优化器使用。
- -Z | –analyze-only
- 仅计算统计信息以供查询优化器使用(不清理)。
- -V | –version
- 打印
vacuumdb
版本并退出。 - -? | –help
- 显示有关
vacuumdb
命令行参数的帮助,然后退出。
以下选项均为连接选项,即连接SeaboxMPP数据库的相关信息:
- -h
host
| --host=host
- 运行SeaboxMPP coordinator数据库服务器的计算机的主机名。如果未指定,则从环境变量
SDHOST
读取或默认为localhost。 - -p
port
| --port=port
- SeaboxMPP coordinator数据库服务器正在侦听连接的TCP端口。 如果未指定,则从环境变量
SDPORT
读取或默认为3000。 - -U
username
| –username=username
- 要用作连接的数据库角色名称。 如果未指定,则从环境变量
SDUSER
读取或默认为当前系统角色名称。 - -w | --no-password
- 不发出密码提示。 如果服务器要求密码验证,而其他方式(例如
.sdpass
文件)无法使用密码,则连接尝试将失败。此选项在没有用户输入密码的批处理作业和脚本中很有用。 - -W | --password
- 强制输入密码提示。
- --maintenance-db=
dbname
- 指定要连接以发现还应群集哪些其他数据库的数据库的名称。如果未指定,将使用
seaboxsql
数据库,如果不存在,将使用template1
。
- 注解
vacuumdb
可能需要连接几次master服务器,每次都要求输入密码。 在这种情况下,使用~/.sdpass
文件很方便。- 示例
-
清理数据库
test
:vacuumdb test
清理分析数据库
bigdb
:vacuumdb --analyze bigdb
要清理名为
mydb
的数据库中的单个表foo
,并分析表的单个列bar
。 请注意表名和列名两边的引号,从shell转义括号:vacuumdb --analyze --verbose --table 'foo(bar)' mydb
- 相关命令
VACUUM
,ANALYZE