• 热门
  • 基础
  • 数据库
  • 安全
  • 大数据
  • 人工智能
  • 混合云
  • 开发与运维
  • 企业应用

应用服务

行业引擎

全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

VACUUM

最近更新时间: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 标准兼容性

SQL 标准中没有 VACUUM 语句。

纯净模式常规模式

纯净模式

点击可全屏预览文档内容

鼠标选中内容,快速反馈问题

如果在文档使用中出现问题,可选中有问题的部分进行快速反馈,我们将跟进处理。
不再提示
好的,我知道了

聆听反馈