Extent Size 选项

Extent Size 选项可定义分配到索引的存储 extent 的大小。
Extent Size 选项
元素 描述 限制 语法
first_kilobytes 该索引的第一个 extent 的长度(以千字节为单位) 必须返回正整数;最大值是 chunk 大小,以千字节为单位 表达式
next_kilobytes 每个后续的 extent 的长度(以千字为单位) 同 first_kilobytes 一样 表达式

first_kilobytes (next_kilobytes)的最小长度是您系统上磁盘页大小的四倍。例如,如果您有 2 千字节的页系统,则最小长度是 8 千字节。

如果需要修改索引的 extent 大小,则您可以修改生成的卸载表的模式文件中 extent 和下一个 extent 大小。例如,要使数据库更有效率,您可以删除该索引,修改模式文件中的 extent 大小,然后创建新的索引。有关如何优化 extent 的更多信息,请参阅 GBase 8s 管理员指南 。

只有您为该索引显式分配作为 extent 大小的 extent 大小的值存储在系统目录中。您在 CREATE INDEX 语句的 EXTENT SIZE 选项中指定的值存储于 sysindices 系统目录表的 fextsize 列,NEXT SIZE 选项中指定的值存储于同一表的 nextsize 列中。然而,如果您省略这些选项,数据库服务器在这些系统目录列中存储零值( 0 ),而非它为该索引的第一个 extent 和第二个 extent 计算并分配的缺省值。

定义带显式 extent 大小的索引的示例

以下程序段创建了新表并在该表上定义了两个未分片的索引。
CREATE TABLE IF NOT EXISTS t (a INT, b INT);
          CREATE INDEX  IF NOT EXISTS idx1 ON t(a) EXTENT SIZE 32 NEXT SIZE 32;
          CREATE INDEX  IF NOT EXISTS idx2 ON t(b); 
        

此处 idx1 的定义指定 32 千字节作为显式 extent 大小。第二个索引 idx2 ,具有系统计算的缺省 extent 大小。这两个 CREATE INDEX 语句包含这些 extent 大小条目的索引的系统目录描述:
  • sysindices.fextent 和 sysindices.nextent 列值对 idx1 分别为 32 。
  • sysindices.fextent 和 sysindices.nextent 列值对 idx2 分别为 0 。

此处 idx2 的 0 值指示没有指定显式 extent 大小(并非指示未分配存储空间)。