GBase 8s ALTER FRAGMENT 语句 MODIFY子句(三)

143 篇文章 3 订阅
142 篇文章 0 订阅

MODIFY 子句
Rolling Window 子句
可以使用 ALTER FRAGMENT ON TABLE . . . MODIFY INTERVAL 语句的 Rolling Window 子句来修改或删除一个滚动参考表的现有清除策略。该子句也可以将不具有分布存储策略或不具有范围区间策略或具有范围区间策略(没有清除策略)的表更改为滚动窗口表。

语法

ALTER FRAGMENT 语句的 Rolling Window 子句支持以下语法。

ALTER FRAGMENT 的 Rolling Window 子句

1: 删除所有滚动间隔分片
在这里插入图片描述

2: 限制最大分配存储大小

在这里插入图片描述

3: 只限制间隔分片的数量
在这里插入图片描述

用法

ALTER FRAGMENT MODIFY INTERVAL 语句中的 Rolling Window 子句的语法支持之前 CREATE TABLE FRAGMENT BY INTERVAL 语句中的 Rolling Window 子句的语法。

修改滚动窗口表

ALTER FRAGMENT MODIFY INTERVAL 语句的 Rolling Window 子句类似于它的语法,但是它不等同于 CREATE TABLE 语句的 Rolling Window 子句。ALTER FRAGMENT 的 Rolling Window 子句支持以下功能:

l 您可以为使用范围区间分片的表定义清除策略。

l 您可以按下列变更修改现有清除策略:

o 更改 quantity 的 ROLLING FRAGMENTS 值

o 更改 size 的 LIMIT TO 值

o 用 DETACH 或 DISCARD 关键字替换 DETACH 或 DISCARD 关键字。

o 替换 ANY 或 INTERVAL FIRST 或 INTERVAL ONLY 关键字选项。

如果您删除 ANY 或 INTERVAL FIRST 或 INTERVAL ONLY 关键字规范而没有替换,缺省的清除策略操作是 INTERVAL FIRST。(有关更多信息,请参阅 Interval fragment 子句。)

l 您可以指定 INTERVAL DISABLED 关键字禁用滚动窗口表的区间分片,从而中止它的清除策略。

l 您可以指定 INTERVAL ENABLED 关键字恢复一个表的区间分片(并重启此清除策略)。该表的区间分片和创建和滚动分片的归档和重建已被禁用。

l 您可以指定 DROP ALL ROLLING 关键字来去除现有的清除策略。其结果是将滚动参考表更改为按区间分片的表。

如果您打算暂时中止当前的清除策略,再随后恢复该相同的清除策略,则应该使用 INTERVAL DISABLED 关键字而不是 DROP ALL ROLLING 关键字。

强制执行清除策略

当已分配的总存储大小或区间分片的总量超出 Rolling Window 子句指定的限制时,滚动窗口表的清除策略不会立即强制执行。

清除策略被设计为在滚动窗口表的分片上的所需 DETACH 和 ATTACH 操作不可能与并发用户的访问尝试冲突时作为 Scheduler 任务每天强制执行。缺省情况下,清除策略会每天的本地时间 00:45 时强制执行。有关更多信息,请参阅 GBase 8s 管理员指南 中的 Scheduler 的内置的 purge_tables 任务。

清除策略也可以通过执行 syspurge() 系统函数而手动强制执行。在 DBA 调用 syspurge() 函数之后,数据库服务器会检查系统目录,并标识任何清除策略已超出的滚动窗口表。然后数据库服务器会按照清除策略指定丢弃或拆离合格的滚动分片直到满足此清除策略,或直到没有可移除的滚动分片。syspurge() 函数不需要参数,但是接受可启用联机日志诊断的可选参数。

只有具有 DBA 存取权限的用户才能调用实行 DETACH 或 DISCARD 选项以拆离滚动分片的例程。具有 RESOURCE 存取权限的用户可以执行 syspurge() 函数,但是这只能对它们所拥有的表的强制执行清除策略。

数据库服务器会默默地忽略 syspurge() 函数关于高可用数据复制集群(HDR)环境中的辅助服务器的调用。类似地,在 grid 环境下,不会强制执行已复制的表的清除策略。这是因为 grid 环境和集群环境不会复制 DETACH 和 DISCARD 选项触发的 ALTER FRAGMENT 更改,这是滚动窗口清除策略的核心。

Rolling Window 子句提供两个关键字选项以处理拆离的滚动区间分片:

l 使用 DETACH 将该分片连接到数据库服务器自动创建的非独立的表中,并且它们的表标识具有以下格式:

< original_table_name >< lower value >< higher value >

此处 lower_value 和 higher_value 是该分片在被拆离前,其范围区间的最小和最大值。

如果表的名称已存在,那么在 higher value 后附加一个数字计数器,以 _1 开始表示第一个附加表:

< original_table_name >< lower value >< higher value >_1

以此类推,将 _2 附加在下一个表的名称后(或附加一个更大的整数,如果附加 _2 没有产生唯一的表名称。)

l 使用 DISCARD 销毁已拆离的分片。

DISCARD 关键字指定删除已拆离的分片,因此当强制执行清除策略时,会及时地删除非必须的数据记录。通过这种方法,滚动分片的数量或滚动窗口表的存储空间总量会约束到规定值。

滚动窗口的限制

ALTER FRAGMENT MODIFY 语句无法使用 Rolling Window 子句将具有以下属性的表更改为滚动窗口表:

l ROWID 列

l 一列或多列定义为一个参考约束的主键

l 已拆离的索引(即,一个索引存储分布方案与该表的分片存储策略不同)

类似地,ALTER TABLE 语句不能为滚动窗口表添加 ROWID 列或主键约束。

l Rolling Window 子句为滚动窗口定义的清除策略要求数据库服务器在分片上执行的 ALTER FRAGMENT DETACH 操作必须满足 DETACH 或 DISCARD 标准。然而,对于包含由一个启动的外键约束引用的主键的表,或包含 ROWID 的表,不允许 ALTER FRAGMENT DETACH 语句。因此 CREATE TABLE and ALTER FRAGMENT ON TABLE . . . MODIFY INTERVAL 语句无法定义或修改具有主键约束或 ROWID 隐藏列表的清除策略。

l 滚动窗口表上定义的任何索引必须具有与该滚动窗口相同的范围区间存储分布。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值