Extent Size 选项

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

first_kilobytesnext_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.fextentsysindices.nextent 列值对 idx1 分别为 32
  • sysindices.fextentsysindices.nextent 列值对 idx2 分别为 0

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