南大通用 GBase8s SQL 常用 SQL 语句(四)
使用 BEFORE 、AFTER 和 REMAINDER 选项
BEFORE 和 AFTER 选项允许您在现有分片之前或之后放入新的分片。当分布方案为循环
或区间间隔时,您不能使用 BEFORE 和 AFTER 选项。
当您连接新的列表或表达式的分片而没有显式地使用 BEFORE 或 AFTER 关键字选项时,
数据库服务器会将所添加的分片置于分片存储列表的末尾,除非存在一个余项分片。如果
存在一个余项分片,则新分片会刚好置于该余项分片前。您不能在余项分片之后连接一个
新分片。
当分布方案是循环或区间间隔时,您无法定义余项分片。
如果您省略了 AS PARTITION
分片
规范,该分片的名称就是存储它的 dbspace 的名称。如
果同一表的另一个分片已经具有其 dbspace 的名称,那么数据库服务器会声明异常,并且
ALTER FRAGMENT ATTACH 操作失败。
将多个未分片表合并以创建一个分片表
当您具有相同表结构的表转换为单独一个表中的分片时,您是允许数据库服务器管理分片
存储,而不是允许应用程序管理分片存储。分布方案可以是循环的或急于表达式的。
要从两个或两个以上相同结构的未分片表创建单独一个分片表,ATTACH 子句必须包含
连
接列表
中的活表。连接列表是 ATTACH 子句中表的列表。
要在新创建的单独一个分片表中包含 rowid ,请首先连接所有表,然后使用 ALTER
TABLE 语句添加 rowid。
将一个表连接到一个分片表
要将一个未分片表连接到一个已分片的表,必须已在独立的 dbspace 中创建该未分片表,
并且必须具有与该分片表相同的表结构。在以下示例中,循环分布方案将表 cur_acct 分
片,而且表 old_acct 是驻留在独立 dbspace 中的未分片表。以下示例说明了如何将
old_acct (作为 consumed table )连接到 cur_acct (作为 surviving table):
ALTER FRAGMENT ON TABLE cur_acct ATTACH old_acct;
当您将一个或多个连接到一个分片表时,consumed_table 必须是未分片的。
在 ATTACH 操作中使用 ONLINE 关键字
如果没有错误,ONLINE 关键字指示数据库服务器内部提交 ALTER FRAGMENT ATTACH
工作,并在活表上放置意图互斥锁而不是互斥锁。互斥锁只能应用在未分片的死表上。