表的类型
Db2® 数据库将数据存储在表中。 除了用于存储持久数据的表以外,还有用于显示结果的表、摘要表和临时表;多维集群表在仓库环境中具有特定的优点。
- 基本表
- 这些类型的表将保存持久数据。 存在不同类型的基本表,其中包括:
- 常规表
- 具有索引的常规表是“常规用途”表选项。
- 多维集群 (MDC) 表
- 这些类型的表是作为同时在多个键或维上进行物理集群的表来实现的。 MDC 表用于数据仓储和大型数据库环境。 常规表的集群索引支持数据的单维集群。 MDC 表具有可以使数据集群在多个维中的优点。 MDC 表在组合维中提供可靠集群。 相反,虽然可以对常规表建立集群索引,并且数据库管理器在这种情况下将尝试进行集群,但此集群不可靠,并且集群程度会随着时间的推移而下降。 MDC 表可以与分区表共存,它们本身可以是分区表。
- 插入时集群 (ITC) 表
- 这些类型的表是概念上的,实际上与 MDC 表类似,但是,行按它们插入到表中的时间进行集群,而不是按一个或多个用户指定维进行集群。 ITC 表可以是分区表。
- 范围集群表 (RCT)
- 这些类型的表是作为提供快速直接访问的数据的顺序集群来实现的。 表中的每一条记录都预先确定了记录标识(RID),该标识是用来在表中查找记录的内部标识。 RCT 表用于数据紧密集群在一个表中的一列或多列中的情况。 这些列中的最大值和最小值定义了可能值的范围。 您使用这些列来访问表中的记录;这是利用 RCT 表的预确定的记录标识 (RID) 的最佳方法。
- 分区表
- 这些类型的表使用了数据组织方案,即,表数据根据该表中一个或多个表分区键列中的值分布到多个存储对象(称为数据分区或范围)中。 可以对分区表添加数据分区、将数据分区与分区表相连以及断开数据分区与分区表的连接,并且,可以将一个表的多个数据分区范围存储在一个表空间中。 分区表可以包含大量数据,并且简化表数据的转入和转出。
- 临时表
- 这些类型的表用于将基于时间的状态信息与数据相关联。 未使用临时支持的表中的数据表示现在,而临时表中的数据在数据库系统和/或客户应用程序定义的时间段有效。 例如,数据库可存储表的历史记录(已删除行或已更新的行的原始值),所以可查询数据的过去状态。 还可对数据行指定日期范围以通过应用程序或业务规则指示该数据何时被认为有效。
- 临时表
- 这些类型的表用作各种数据库操作的临时工作表。 已声明临时表(DGTT)不会在系统目录中出现,因此不会被保留下来以供其他应用程序使用,也不可供其他应用程序共享。 当使用此表的应用程序终止或与数据库断开连接时,此表中的数据将被删除,此表也将被删除。 相反,已创建临时表(CGTT)将在系统目录中出现,而不需要在每个使用这些表的会话中进行定义。 因此,它们具有持久性,并能够跨不同的连接供其他应用程序共享。这两种类型的临时表都不支持
- 用户定义的引用或用户定义的结构类型列
- LONG VARCHAR 列
- 具体化查询表 (MQT)
- MQT 由查询定义,此查询也定义 MQT 的数据。 使用具体化查询表改进查询性能。 根据查询优化的数据库配置设置,数据库管理器确定可使用 MQT 解析查询的某个部分。 MQT 按其数据维护方式进行分类。
- 影子表
- 影子表是行组织表的列组织 MQT 副本。 它可包含源行组织表的所有列或部分列。 影子表通过复制维护。
您可以使用 CREATE TABLE 语句来创建上述所有类型的表。
根据数据的不同,您可能会发现,某种表类型的特定功能能够优化存储和查询性能。 例如:如果具有松散集群(而不是单调增大)的数据记录,那么应考虑使用常规表和索引。 如果有一些数据记录将在键中具有重复(而不是唯一的)值,那么不应使用范围集群表。 并且,如果不能在磁盘上为您想要的范围集群表预分配固定的存储量,那么不应使用这种类型的表。 如果数据有可能按多个维进行集群,例如按地理区域、分公司和供应商来跟踪零售额的表,那么多维集群表能够满足您的需要。
除了上面描述的各种表类型以外,您还可以选择分区之类的特征选项,这有助于提高滚入表数据之类的任务的性能。 另外,与常规的非分区表相比,分区表能够存放更多信息。 您还可以使用压缩之类的功能,这可以帮助您显著降低数据数据存储器成本。