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

GBase8s语法 ADD子句

wj2021 2022-10-26
317

 ADD 子句

使用 ADD 子句将另一个分片添加到表或索引的现有分片列表中。

ADD 子句


expression
 仅包含当前表中的 column 名称,以及单独一行中的数据值。不允许任何子查询或聚集。此外,在此处,内置的 CURRENT DATE DBINFO SYSDATE  TODAY 表达式无效。

向循环分布方案添加新的 Dbspace

您可以向循环分布方案添加更多的 dbspace 。以下示例显示了最初的循环定义:

CREATE TABLE book (col1 INT, col2 INT)

   FRAGMENT BY ROUND ROBIN IN dbsp1, dbsp4;

要添加另一个 dbspace ,请如下例使用 ADD 子句:

ALTER FRAGMENT ON TABLE book ADD dbsp3;

向循环分布方案添加新的 Dbspace

您可以向循环分布方案添加更多的 dbspace 。以下示例显示了最初的循环定义:

CREATE TABLE book (col1 INT, col2 INT)

   FRAGMENT BY ROUND ROBIN IN dbsp1, dbsp4;

要添加另一个 dbspace ,请如下例使用 ADD 子句:

ALTER FRAGMENT ON TABLE book ADD dbsp3;

向循环分布方案添加新的分片

在 GBase 8s 中,您可以向现有的循环分布方案添加的分片。它的名称必须在同一 dbspace 多个分片的分布中必须是唯一的。以下示例如在前一节中那样指定相同的最初循环分片存储定义:

CREATE TABLE book (col1 INT, col2 INT)

          FRAGMENT BY ROUND ROBIN IN dbsp1, dbsp4;

要添加新的已命名的分片,请按以下示例使用 ADD 子句:

ALTER FRAGMENT ON TABLE book

          ADD PARTITION chapter3 IN dbsp1;

新的分布使用 dbsp1 、dbsp4 和 chapter3 作为 3 部分循环分片存储方案的存储位置。分片 chapter3 中的记录存储在与第一个分片中的记录相互独立的 dbsp1 dbspace 中。

添加分片表达式

向一个基于表达式的分布方案的分片列表中添加分表达式会将现有分片中的记录重新分配到新的分片中。当您将新的分片添加到分片列表中时,数据库服务器将对位于新分片之后的分片中的所有数值重新求值。(sysfragments 系统目录表中的任一 evalpos 列值标识了此分片在分片列表中的初始位置。)

下一示例显示最初的表达式定义:

FRAGMENT BY EXPRESSION

          c1 < 100 IN dbsp1, c1 >= 100 AND c1 < 200 IN dbsp2,

          REMAINDER IN dbsp3

要在 dbspace dbsp2 的一个新分片中添加另一个分片以存储 200 到 299 之间的 c1 值的列,请使用以下 ALTER FRAGMENT 语句:

ALTER FRAGMENT ON TABLE news

          ADD PARTITION century3 (c1 >= 200 AND c1 < 300) IN dbsp2;

除了满足标准(c1 >= 200 AND c1 < 300)的行之外,所有原来在余项分片中的行都移动到 dbspace dbsp2 中新的 century3 分区中。

如果当启用自动更新分布统计信息方式,ALTER FRAGMENT ADD 操作会重新分布数据行,数据库服务器会删除已受影响分片的分布统计信息,但是不删除该表的统计信息。该表的下一个查询将会导致数据服务器为重新计算同一分片的统计信息。

使用 BEFORE 和 AFTER 选项

BEFORE 和 AFTER 选项可以将新的分片放置于分片列表中现有分片之前或之后。分片的名称是 dbspace 的名称或 PARTITION 子句中声明的名称。如果分布方案是循环或范围区间的,您就不能使用 BEFORE 和 AFTER 选项。

当您连接新的分片而未使用 BEFORE 或 AFTER 选项时,数据库服务器会将所添加的分片置于分片列表的末尾,除非存在一个余项分片。如果存在一个余项分片,则新的分片会刚好置于该余项分片前。您不能在余项分片之后连接一个新分片。

使用 REMAINDER 选项

如果一个余项分片已存在,您就不能添加它。如果您在一个余项分片存在时添加一个新的分片,数据库服务器将检索并重新计算余项分片中的所有记录;一些记录将可能移动到新的分片中。余项分片总是分片列表中的最后一项。

您不能向范围区间分片结构的分片列表中添加一个余项分片。

 

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

评论