创建 按列组织的 表
创建 按列组织的 表,以将单个列中的数据一起存储在一组数据页面上,而不是将完整行的数据一起存储在一组数据页面上。
准备工作
- 将 SORTHEAP 数据库配置参数和 SHEAPTHRES_SHR 数据库配置参数设置为 AUTOMATIC 以外的值。
- 在创建数据库之前,将 DB2_WORKLOAD 注册表变量设置为 ANALYTICS。 对分析性工作负载使用数据库时,此设置将确定最佳缺省配置。 有关更多信息,请参阅 系统环境变量。
- 数据库可以是单分区数据库或多分区数据库,使用 UNICODE 或 ISO8859-1(代码页 819)代码集,并使用 IDENTITY 或 IDENTITY_16BIT 整理顺序。
- 要满足 LOAD 命令的资源需求,请将 util_heap_sz(实用程序堆大小)数据库配置参数设置为至少 1,000,000 页和 AUTOMATIC。
关于本任务
通过在星型模式数据集市中创建 按列组织的 表,您可以从通过简化设计和调整对存储,查询性能和易用性的显着改进中获益。
限制
- 查看 CREATE TABLE 语句中的任何适用限制。
- 查看 数据库管理器特定于页面大小的限制中 按列组织 表的特定于页面大小的限制。
- 约束
- ENFORCED 检查和外键 (引用完整性) 约束在 按列组织的 表上不受支持。 支持将这些约束用作参考 (NOT ENFORCED) 约束。
- 创建基于 按列组织的 表的视图时,不能指定 WITH CHECK OPTION。
创建 按列组织的 表可能会导致自动创建用于存储元数据的表。
过程
要创建 按列组织的 表,请执行以下操作:
示例
以下示例显示如何创建名为 JTNISBET.STAFF的 按列组织的 表。
- 发出 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; - 通过使用 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';