确保在连接分段时不发生数据移动

可以通过建立一致检查约束表达式并验证分段表达式是否重叠来确保在连接分段时不会移动数据。

要确保在连接分段时不发生数据移动,请执行以下操作:

  1. 对附加表建立检查约束,假设 ALTER FRAGMENT ATTACH 操作之后,检查约束与分段表达式相同。
  2. 用非重叠表达式定义分段。
例如:您可能会用以下 SQL 语句创建分段表和索引:
CREATE TABLE tb1(a int) 
   FRAGMENT BY EXPRESSION
            (a >=0 AND a < 5) IN db1,
            (a >=5 AND a <10) IN db2;

CREATE INDEX idx1 ON tb1(a);
假设您又创建另一个未分段的表,然后决定将它附加到前面的分段表。
CREATE TABLE tb2 (a int, check (a >=10 and a<15))
      IN db3;

CREATE INDEX idx2 ON tb2(a) 
      IN db3;

ALTER FRAGMENT ON TABLE tb1 
      ATTACH 
            tb2 AS (a >= 10 AND a<15) AFTER db2;
此 ALTER FRAGMENT ATTACH 操作利用了现有索引 idx2,因为在示例中执行了以下步骤以阻止现有的表分段和新的表分段之间的数据移动:
  • CREATE TABLE tb2 语句中的检查约束表达式与 ALTER FRAGMENT ATTACH 语句中的表 tb2 的分段表达式相同。
  • CREATE TABLE tb1 中指定的分段表达式与 ALTER FRAGMENT ATTACH 语句不重叠。

所以,数据库服务器在数据库空间 db3 中保留索引 idx2,并将之转换成 索引 idx1 的分段。索引 idx1 仍保持与 表 tb1 使用相同的分段存储策略。