最近更新时间:2024-11-26 18:14:10
垃圾收集并可选分析数据库。
VACUUM [FULL] [FREEZE] [VERBOSE] [<table>]
VACUUM [FULL] [FREEZE] [VERBOSE] ANALYZE
[<table> [(<column> [, ...] )]]VACUUM 回收被删除元组占用的存储空间。在正常的 Relyt 操作中,被删除或通过更新过时的元组并未从其表中物理删除。它们仍然存在于硬盘上,直到进行 VACUUM。因此,需要定期进行 VACUUM,尤其是在经常更新的表上。
没有参数,VACUUM 处理当前数据库中的每个表。有参数,VACUUM 仅处理该表。
VACUUM ANALYZE 对每个选定的表执行 VACUUM,然后进行 ANALYZE。这是常规维护脚本的方便组合形式。有关其处理的更多详细信息,请参见 ANALYZE。
FULL
选择完全清理,可以回收更多空间,但需要更长时间,并对表进行独占锁定。这种方法还需要额外的磁盘空间,因为它会写入表的新副本,并且在操作完成之前不会释放旧副本。建议你只有在需要从表中回收大量空间时才使用 FULL。
FREEZE
指定 FREEZE 等同于将服务器配置参数 vacuum_freeze_min_age 设置为零来执行 VACUUM。
VERBOSE
为每个表打印详细的清理活动报告。
ANALYZE
更新 Planner 用来确定运行查询的最有效方式的统计信息。
<table>
将从中回收空间的表的名称。
<column>
要分析的列的名称。
当你在 VACUUM ANALYZE 命令中指定列时,该命令只分析指定的列。无论是否指定了列,VACUUM 操作都处理整个表。
当你在 VACUUM ANALYZE 命令中指定列时,该命令只分析指定的列。无论是否指定了列,VACUUM 操作都处理整个表。
VACUUM 不能在事务块内运行。
频繁清理活动数据库(至少每晚一次),以便删除过期的行。在添加或删除大量行后,运行受影响表的 VACUUM ANALYZE 命令可能会有所帮助。这将更新系统目录,以反映所有最近的更改的结果,并允许 Relyt 查询优化器在规划查询时做出更好的选择。
必须在用户定义的数据库中执行手动的 VACUUM 操作,以管理那些数据库中的事务 ID (XIDs)。
VACUUM 导致 I/O 流量大幅增加,这可能导致其他活动会话的性能下降。因此,建议在使用率较低的时间清理数据库。
VACUUM 命令跳过外部表。
VACUUM FULL 回收所有过期的行空间,但是它需要对每个正在处理的表进行独占锁定,是一种非常昂贵的操作,并且可能需要很长时间才能在大型和分布式的 Relyt 表上完成。在数据库维护期间执行 VACUUM FULL 操作。
FULL 选项不推荐常规使用,但在特殊情况下可能有用。一个例子是当你已经删除或更新了表中的大多数行,并期望表物理缩小以占用更少的磁盘空间并允许更快的表扫描。VACUUM FULL 通常会比普通的 VACUUM 更缩小表。
要清理一个单独的表 onek,为优化器分析它并打印详细的清理活动报告:
VACUUM (VERBOSE, ANALYZE) onek;清理当前数据库中的所有表:
VACUUM;只清理一个特定的表:
VACUUM (VERBOSE, ANALYZE) mytable;清理当前数据库中的所有表并收集查询优化器的统计信息:
VACUUM ANALYZE;SQL 标准中没有 VACUUM 语句。
纯净模式
