最近更新时间: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
语句。
纯净模式
鼠标选中内容,快速反馈问题