DB2 10.5 for Linux, UNIX, and Windows

压缩字典

数据库管理器为已启用自适应压缩或经典行压缩的每个表创建表级别压缩字典。对于已启用自适应压缩的表,数据库管理器还会创建页级别压缩字典。为列组织表创建列压缩字典。 这些字典用于将重复字节模式映射至小得多的符号;这些符号会替换表中的较长字节模式。

表级别压缩字典

为构建表级别字典,系统会扫描表中所有行以查找重复模式。然后数据库管理器会构建一个压缩字典,并对重复模式指定简短数字键。通常,文本字符串的压缩机率高于数字数据;压缩数字数据涉及将一个数字替换为另一个数字。根据要替换的数字的大小,节省的存储空间可能不像压缩文本时节省的存储空间那么多。

第一次创建表级别字典时,系统使用表中的数据样本来构建该字典。此字典是静态的,这意味着它不会再次更新,除非您使用经典脱机表重组来重建此字典。即使您重建该字典,该字典也只反映整个表中的数据的样本。

表级别压缩字典存储在应用该字典的对象中的隐藏行中,并且会高速缓存在内存中以便快速访问。此字典不会占用太多空间。即使对于极大的表,压缩字典通常也只占用大约 100 KB 空间。

页级别压缩字典

除了表级别字典,自适应压缩还使用页级别字典。但是,与表级别字典不同,页级别字典是在数据库管理器填充页时自动创建或重新创建的。与表级别压缩字典一样,页级别字典存储在表内的隐藏行中。

列压缩字典

列压缩字典用于压缩列组织表的列数据。将数据装入到列组织表中时,第一个阶段是分析阶段,这是列组织表独有的。仅当需要构建列压缩字典时会发生分析阶段,此阶段在 LOAD REPLACE 操作、LOAD REPLACE RESETDICTIONARY 操作、LOAD REPLACE RESETDICTIONARYONLY 操作或 LOAD INSERT 操作期间发生(如果列组织表为空)。装入实用程序会分析输入数据,以确定用于构建列压缩字典的最佳编码方案。

如果向表添加列时列压缩字典已存在,那么新列的列压缩字典将仅包含新列的缺省值。这意味着您以后添加至该列的所有非缺省值保持未压缩状态。如果向表添加列时列压缩字典不存在,那么对此表触发自动字典创建 (ADC) 时,会对新列和先前存在的列创建字典。尽管通常添加的列以及同一个表的先前存在的列不会压缩,新列仍可从页级别压缩受益。