暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8c 数据库维护:日常清理(一)

夏日晴空 2021-12-09
312

GBase 8c数据库需要周期性的清理维护以达到最优的性能,清理维护工作可以通过自动清理守护进程或手动管理VACUUM命令来进行。

VACUUM应用

建议使用VACUUM命令定期对GBase 8c数据库的表进行清理,主要有以下几个原因:

1. 恢复或重用被已更新或已删除行所占用的磁盘空间。

2. 更新被查询规划器使用的数据统计信息。

3. 更新可见性映射,它可以加速只用索引的扫描。

4. 保护老旧数据不会由于事务ID回卷或多事务ID回卷而丢失。

VACUUM回收表或B-Tree索引中已经删除的行所占据的存储空间。在一般的数据库操作里,那些已经DELETE的行并没有从它们所属的表中物理删除;在完成VACUUM之前它们仍然存在。因此有必要周期地运行VACUUM,特别是在经常更新的表上。

VACUUM命令基础

VACUUM命令语法:

VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE | DISABLE_PAGE_SKIPPING } [, ...] ) ] [ table_name [ (column_name [, ...] ) ] ]

VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table_name ]

VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table_name [ (column_name [, ...] ) ] ]

在不带参数的情况下,VACUUM会处理当前用户有权限清理的当前数据库中的所有表。通过使用参数可以对指定表进行清理:

l FULL选择“FULL”清理,这样可以恢复更多的空间,但是需要耗时更多,并且在表上施加了排他锁。

l FREEZE指定FREEZE相当于执行VACUUM时将vacuum_freeze_min_age参数设为0。

l VERBOSE为每个表打印一份详细的清理工作报告。

l ANALYZE更新用于优化器的统计信息,以决定执行查询的最有效方法。

l DISABLE_PAGE_SKIPPING通常,VACUUM将基于可见性映射跳过页面。已知所有元组都被冻结的页面总是会被跳过,而那些所有元组对所有事务都可见的页面则可能会被跳过(除非执行的是激进的清理)。此外,除非在执行激进的清理时,一些页面也可能会被跳过,这样可避免等待其他页面完成对其使用。这个选项禁用所有的跳过页面的行为,其意图是只在可见性映射内容值得怀疑时使用,这种情况只有在硬件或者软件问题导致数据库损坏时才会发生。

l table_name要清理的表的名称(可以有模式修饰)。取值范围:要清理的表的名称。缺省时为当前数据库中的所有表。

l column_name要分析的具体的字段名称。取值范围:要分析的具体的字段名称。缺省时为所有字段。

 


最后修改时间:2022-04-21 20:23:37
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论