PostgreSQL插件pg_repack介绍和简单使用【2】
文章目录
- pg_repack用法介绍
- OPTIONS指定选项
- 重组选项
- 连接选项
- 通用选项
pg_repack用法介绍
OPTIONS指定选项
- -a, --all
重新打包所有数据库 - -t, --table=TABLE
仅打包指定表 - -I, --parent-table=TABLE
重新打包特定的父表及其继承表 - -c, --schema=SCHEMA
仅打包指定模式内的表 - -s, --tablespace=TBLSPC
移动重打包的表到新的表空间 - -S, --moveidx
也将重新打包的索引移动到表空间 - -o, --order-by=COLUMNS
按列排序,而不是按聚集键排序 - -n, --no-order
执行完全清理(VACUUM FULL)操作,而不是执行聚集(CLUSTER)操作 - -N, --dry-run
打印出本应重新打包的内容并退出 - -j, --jobs=NUM
为每个表使用多并行作业 - -i, --index=INDEX
仅移动指定的索引 - -x, --only-indexes
仅移动指定表的索引 - -T, --wait-timeout=SECS
在发生冲突时取消其他后台进程的超时时间 - -D, --no-kill-backend
超时时不终止其他后台进程 - -Z, --no-analyze
结束时不进行分析 - -k, --no-superuser-check
在客户端跳过超级用户检查 - -C, --exclude-extension
不要重新打包属于特定扩展的表。–no-error-on-invalid-index 即使发现无效索引也重新打包。–error-on-invalid-index 当发现无效索引时不重新打包,此选项已弃用,因为现在这是默认行为。–apply-count 在重放期间,一次事务中应用的元组数量。–switch-threshold 当剩余这么多元组需要追赶时,切换表。
重组选项
通常用于数据库管理系统中,指的是对数据库表、索引或数据进行重新组织或优化的过程。
这些“重组选项”或“重新组织选项”允许用户指定在执行重组操作时的一些参数或行为,以满足特定的性能优化、空间管理或数据完整性需求。
- -a, --all
尝试对集群中的所有数据库进行重新打包。对于未安装 pg_repack 扩展的数据库,将跳过处理。 - -t TABLE, --table=TABLE
仅对指定的表进行重新组织。可以使用多个 -t 开关来重新组织多个表。默认情况下,目标数据库中的所有符合条件的表都会被重新组织。 - -I TABLE, --parent-table=TABLE
对指定的表及其继承表进行重新组织。通过编写多个 -I 开关,可以对多个表层次结构进行重新组织。 - -c, --schema
仅对指定模式中的表进行重新打包。通过编写多个 -c 开关,可以对多个模式中的表进行重新打包。此选项可以与 –tablespace 一起使用,以便将表移动到不同的表空间。 - -o COLUMNS [,…], --order-by=COLUMNS [,…]
执行一个根据指定列排序的在线聚簇集操作。 - -n, --no-order
执行一个在线的VACUUM FULL操作。从1.2版本开始,这成为了非聚集表的默认操作。 - -N, --dry-run
列出将要重新打包的对象并退出。 - -j, --jobs
为PostgreSQL创建指定数量的额外连接,并使用这些额外连接来并行重建每个表上的索引。并行索引构建仅支持全表重新打包,而不支持使用 –index 或 –only-indexes 选项。如果您的PostgreSQL服务器有额外的内核和可用的磁盘I/O,那么这可以是一种加速pg_repack的有用方法。 - -s TBLSPC, --tablespace=TBLSPC
将重新打包的表移动到指定的表空间:这实质上是 ALTER TABLE … SET TABLESPACE 命令的在线版本。除非同时指定了 –moveidx ,否则表的索引将保留在原始表空间中。 - -S, --moveidx
还将重新打包的表的索引移动到由–tablespace选项指定的表空间中。 - -i, --index
仅重新打包指定的索引。可以通过写入多个-i开关来重新打包多个索引。可以与 –tablespace 结合使用,将索引移动到不同的(表空间)。 - -x, --only-indexes
仅重新打包指定表的索引,这些表必须使用 –table 或 –parent-table 选项进行指定。 - -T SECS, --wait-timeout=SECS
pg_repack 在重新打包过程的开始和结束时各需要获取一个排他锁。此设置控制 pg_repack 在获取这些锁时将等待多少秒。如果在此时间段后仍未能获取到锁,并且未指定 –no-kill-backend 选项,pg_repack 将强制取消与之冲突的查询。如果您使用的是 PostgreSQL 8.4 或更高版本,在超过此超时时间的两倍后,pg_repack 将回退到使用 pg_terminate_backend() 来断开任何剩余的后端连接。默认的超时时间是 60 秒。 - -D, --no-kill-backend
如果无法在指定的 –wait-timeout 时间内获取锁,则跳到重新打包表,而不是取消冲突的查询。默认值为false。 - -Z, --no-analyze
在完整表重组后禁用 ANALYZE。如果未指定,则在重组后运行 ANALYZE。 - -k, --no-superuser-check
跳过客户端中的超级用户检查。此设置在支持以非超级用户身份运行 pg_repack 的平台上很有用。 - -C, --exclude-extension
跳过属于指定扩展的表。一些扩展在规划时间等方面可能高度依赖于这些表。 - –switch-threshold
当日志表中剩余指定数量的元组(行)时切换表。此设置可用于防止无法跟上写入量大的表的进度。
连接选项
连接到服务器的选项。您不能同时使用 –all 和 –dbname 或 –table 或 –parent-table 。
- -a, --all
重组所有数据库。 - -d DBNAME, --dbname=DBNAME
指定要重组的数据库的名称。如果未指定此选项且未使用-a(或–all),则会从环境变量 PGDATABASE 中读取数据库名称。如果未设置该环境变量,则使用为连接指定的用户名。 - -h HOSTNAME, --host=HOSTNAME
指定服务器上运行机器的主机名。如果该值以斜杠(/)开头,则它将被用作Unix域套接字的目录。 - -p PORT, --port=PORT
指定服务器监听连接的TCP端口号或本地Unix域套接字文件的扩展名。 - -U USERNAME, --username=USERNAME
用于连接的用户名。 - -w, --no-password
从不提示输入密码。如果服务器需要密码认证,且无法通过其他方式(如.pgpass文件)提供密码,则连接尝试将失败。此选项在批处理作业和脚本中可能很有用,因为在这些情况下没有用户在场输入密码。 - -W, --password
强制程序在连接到数据库之前提示输入密码。
此选项并非必不可少,因为如果服务器要求密码认证,程序会自动提示输入密码。然而,pg_repack在发现服务器需要密码时会浪费一次连接尝试。在某些情况下,输入-W以避免额外的连接尝试是值得的。
通用选项
- -e, --echo
回显发送到服务器的命令。 - -E LEVEL, --elevel=LEVEL
从DEBUG、INFO、NOTICE、WARNING、ERROR、LOG、FATAL和PANIC中选择输出消息级别。默认级别是INFO。 - –help
显示程序的使用方法。 - –version
显示程序的版本号。