创建 按列组织的

创建 按列组织的 表,以将单个列中的数据一起存储在一组数据页面上,而不是将完整行的数据一起存储在一组数据页面上。

准备工作

  1. SORTHEAP 数据库配置参数和 SHEAPTHRES_SHR 数据库配置参数设置为 AUTOMATIC 以外的值。
  2. 在创建数据库之前,将 DB2_WORKLOAD 注册表变量设置为 ANALYTICS。 对分析性工作负载使用数据库时,此设置将确定最佳缺省配置。 有关更多信息,请参阅 系统环境变量
  3. 数据库可以是单分区数据库或多分区数据库,使用 UNICODE 或 ISO8859-1(代码页 819)代码集,并使用 IDENTITY 或 IDENTITY_16BIT 整理顺序。
  4. 要满足 LOAD 命令的资源需求,请将 util_heap_sz(实用程序堆大小)数据库配置参数设置为至少 1,000,000 页和 AUTOMATIC

关于本任务

通过在星型模式数据集市中创建 按列组织的 表,您可以从通过简化设计和调整对存储,查询性能和易用性的显着改进中获益。


限制

  • 查看 CREATE TABLE 语句中的任何适用限制。
  • 查看 数据库管理器特定于页面大小的限制按列组织 表的特定于页面大小的限制。
  • 约束
    • ENFORCED 检查和外键 (引用完整性) 约束在 按列组织的 表上不受支持。 支持将这些约束用作参考 (NOT ENFORCED) 约束。
    • 创建基于 按列组织的 表的视图时,不能指定 WITH CHECK OPTION。

创建 按列组织的 表可能会导致自动创建用于存储元数据的表。

过程

要创建 按列组织的 表,请执行以下操作:

  1. 发出 CREATE TABLE 语句,指定 ORGANIZE BY COLUMN 子句并在 按列组织的 表上创建主键。
  2. 通过运行 LOAD 命令来填充表。
    重要信息: 首次使用数据填充 按列组织的 表时,建议使用单个大型装入操作来添加大部分数据。 需要单个大型装入操作是因为,列压缩字典是根据第一个表装入操作来创建。

示例

以下示例显示如何创建名为 JTNISBET.STAFF的 按列组织的 表。

  1. 发出 CREATE TABLE 语句,如下所示:
    CREATE TABLE JTNISBET.STAFF (
      ID SMALLINT NOT NULL,
      NAME VARCHAR(9),
      DEPT SMALLINT,
      JOB CHAR(5),
      YEARS SMALLINT,
      SALARY DECIMAL(7,2),
      COMM DECIMAL(7,2) )
     ORGANIZE BY COLUMN;
  2. 通过使用 LOAD 命令来对 JTNISBET.STAFF 表填充数据,如以下示例所示:
    LOAD FROM /TEST/DATA.DEL OF DEL MODIFIED BY COLDEL,
         REPLACE INTO JTNISBET.STAFF;
以下查询将返回数据库中所有 按列组织的 表的列表:
SELECT
    SUBSTR(TABNAME, 1, 24) AS TABNAME,
    SUBSTR(TABSCHEMA, 1, 24) AS TABSCHEMA
FROM SYSCAT.TABLES
WHERE TABLEORG = 'C';