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

GBase 8c日常清理维护(二)

夏日晴空 2022-05-19
177

 恢复磁盘空间

为了保证MVCC对旧版本数据的可见性,GBase 8c数据库在对数据进行UPDATA或DELETE操作后不会立即删除该行的旧版本。在所有事务都不再需要旧版本数据时,需要运行VACUUM命令回收被占用的空间,避免磁盘空间无限制增长。在Coordinator节点和Datanode节点上都应该做此操作。

更新规划期统计信息

GBase 8c数据库的查询优化器需要调用表的统计信息。这些统计信息由ANALYZE命令收集(并存储在系统目录pg_statistic中)。ANALYZE命令可以作为VACUUM的一个可选步骤被调用,也可以直接调用。在Coordinator节点和Datanode节点上都应该做此操作。语法:

ANALYZE [ VERBOSE ] [ table_name [ ( column_name [, ...] ) ] ]

VERBOSE:允许显示进度消息。

table_name:要分析的一个指定表的名称(可以是模式限定的)。如果省略, 当前数据库中所有常规表、分区表和物化视图都会被分析(但不包括外部表)。 如果指定的表是分区表,则分区表的继承统计信息以及各个分区的统计信息都会更新。

column_name:要分析的一个指定列的名称。默认是所有列。

 更新可见性映射

清理机制为每个表维护一个可见性映射,用来跟踪哪些页面只包含对所有活动事务可见的元组。

 防止事务ID回滚失败

GBase 8c数据库的MVCC事务依赖于对事务ID(XID)的比较:如果一个插入事务的XID大于当前事务的XID,则插入操作就是属于“未来的”操作,对当前事务不可见。但是由于当前最大可支持事务数40亿,一旦超出40亿,则XID从0开始重新计数。如果一个长事务超过40亿事务数的时间,则本来属于过去的事务会突然变成未来事务,会导致灾难性的数据丢失。为了避免这种情况发生,需要至少在每20亿事务清理数据库中的所有表。

为了跟踪一个数据库中最老的未冻结XID的年龄,VACUUM在系统表pg_class和pg_database中存储XID的统计信息。表pg_class的relfrozenxid列包含上一次全表VACUUM所用的冻结截止XID。表pg_database的datfrozenxid列是出现在该数据库中的未冻结XID的最小值。

自动请理后台进程

GBase 8c数据库提供了autovacuum用于控制数据库自动清理功能的启动。自动清理进程运行的前提是将track_counts设置为true。该配置需要在所有的CN和DN节点均设置。

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

评论