分布方案

在决定是否将表行和/或索引键分段以及决定应该如何在各分段间分布行和键之后,您可决定用于实现此分布的方案。GBase 8s 支持分段间的随机分布以及分段间基于值的分布。

分段间的随机分布:

循环分段存储
此种类型的分段存储在分段中逐个放入行,循环经过一系列分段以便均匀分布各行。

对于智能大对象,您可以在 CREATE TABLE 或 ALTER TABLE 语句的 PUT 子句中指定多个数据库空间以按照循环分布方案分布智能大对象,从而使每个空间中智能大对象数大致相等。

对于 INSERT 语句,数据库服务器对随机数使用散列函数,以确定放入行的分段。对于 INSERT 游标,数据库服务器将第一行放入一个随机分段,将第二行按顺序放入下一个分段,依此类推。如果某个分段满了,那么跳过该分段。

分段间基于值的分布:

基于表达式的分段存储
此种类型的分段存储将包含指定值的行放在同一个分段中。您可以指定分段存储表达式以定义标准,用于 将一组行分配到每个分段,该标准可以作为范围规则,也可以作为某个仲裁规则。

您可以指定剩余分段,用于存放所有不匹配任何其他分段的标准的行,不过剩余分段会降低基于表达式的分布方案的效率。

基于列表的分段存储
此类型的分段存储将包含与离散值列表中某个指定值相匹配的指定值的行放在同一分段中。对于每个分段,将一个或多个常量表达式的列表指定为对应于表中一个或多个列的分段表达式。计算分段表达式的列或列集称为分段键

您可以选择指定剩余分段,用于保留不与任何其他分段条件相匹配的所有行。您还可以选择指定 NULL 分段,用于将缺少数据的行存储在分段键列中(因为其分段表达式是 NULL 或 IS NULL)。

按列表分段存储和按表达式分段存储之间最重要的区别是,每个分段的列表中每个值在相同表或索引的所有分段列表之间必须唯一。

基于时间间隔的分段存储
此类型的分段存储将数据分入到分段中,这些分段基于特定时间间隔内相同分段中单个数字、DATE 或 DATETIME 列的分段键范围内的量化值。将至少一个范围表达式指定为定义每个分段的分段键值上限的分段表达式,并指定数据库服务器自动创建的系统定义分段范围大小的时间间隔表达式

您可以选择将 NULL 分段定义为将缺少数据的行存储在分段键列中,但不支持或不需要任何剩余分段。数据库服务器自动创建新分段来存储具有任何现有分段范围之外的非 NULL 分段键值的行。使用范围表达式定义的分段称为范围分段,数据库服务器在运行时创建的系统定义分段称为时间间隔分段。此类型的分布方案有时称为范围间隔分布策略。