经典行压缩
经典行压缩(有时称为静态压缩)通过将各行之间重复的值模式替换为更短的符号字符串来压缩数据行。
使用经典行压缩的好处与自适应压缩相似,可以减少用于存储数据的空间,从而可显著节省存储成本。但是,与自适应压缩不同,经典行压缩仅使用表级别字典来存储全局重复出现的模式;它不使用那些用于以动态方式压缩数据的页级别字典。
经典行压缩的工作方式
经典行压缩使用表级别压缩字典来按行压缩数据。字典用来将表行中重复的字节模式映射至更小的符号;这时,这些符号替换表行中更长的字节模式。压缩字典与表数据行一起存储在表的数据对象部分中。
对哪些数据进行压缩?
存储在基本表行和日志记录中的数据符合经典行压缩资格。此外,也可以对 XML 存储对象中的数据进行压缩。可压缩直接插入到表行中的 LOB 数据;但是,不会压缩长数据对象的存储对象。
启用或禁用经典行压缩
要对表禁用压缩,请使用带有 COMPRESS NO 选项的 ALTER TABLE 语句;您以后添加的行不会压缩。要抽取整个表,必须使用 REORG TABLE 命令来执行表重组。
如果您有 DB2 Storage Optimization Feature 的许可证,那么可自动启用对临时表的压缩。您不能直接启用或禁用对临时表进行压缩。
更新活动对日志和已压缩表的影响
根据更新活动以及在数据行中更新的列,日志的使用可能增加。有关如何将更新活动对日志的影响降至最低的信息,请参阅对列进行排序以使更新日志记录最少。
如果行大小增大,那么该行的新版本可能不适合放在当前数据页上。而且,行的新映像将存储在溢出页上。为尽量减少指针溢出记录的形成,应使用带有 PCTFREE 选项的 ALTER TABLE 语句来提高重组后每页留为可用空间的百分比。例如,如果在启用压缩之前将 PCTFREE 选项设为 5%,那么可以在启用压缩时将其更改为 10%。提高每页留为可用空间的百分比对于大量更新的数据特别重要。
临时表的经典行压缩
临时表的压缩是使用 DB2 Storage Optimization Feature自动启用的。执行查询时,DB2 优化器将考虑对临时表进行压缩所节省的存储器容量以及对查询性能的影响,从而确定是否值得使用压缩功能。如果值得使用,那么将自动使用压缩功能。在使用压缩功能之前,临时表必须达到的最小大小比常规表的要大。
可以使用说明工具或 db2pd 工具来了解优化器是否对临时表使用了压缩。