
使用霍夫曼压缩算法压缩数据
Db2 可以使用霍夫曼压缩来减少数据压缩所需的表空间。 压缩表空间中的数据可以显著减少存储数据所需的磁盘空间,并有助于提高缓冲池性能。
准备工作
FL 504 TS_COMPRESSION_TYPE 子系统参数指定用于压缩的默认压缩算法 Db2 子系统级别的数据。
FL 509 ALTER TABLESPACE、CREATE TABLE和CREATE TABLESPACE语句的COMPRESS选项可以定义压缩算法,用于在表空间或分区级别压缩 Db2 数据。
您可以使用 DSN1COMP 工具来确定数据的压缩效果。
启用霍夫曼压缩:
- Db2 子系统或数据共享组必须在 IBM z14® 或更高版本的硬件上运行
- 功能级别必须为 V12R1M504 或更高
- 要压缩的表格空间是一个通用表格空间
- 以下任何一项为真:
- 表空间由压缩是子句定义,TS_COMPRESSION_TYPE子系统参数设置为HUFFMAN
- FL 509 表格空间由压缩是和霍夫曼条款定义
在 Db2 12 中启用较低(*)功能级别对HUFFMAN压缩的使用有以下影响:
- 如果启用较低的功能级别 V12R1M504*–V12R1M508* ,则所有新的REORG、LOAD或插入操作都会为定义为使用霍夫曼压缩的表空间生成霍夫曼字典。
- 如果将功能级别设置为 V12R1M503* 或更低,则所有新的REORG、LOAD或插入操作(产生压缩字典)都将产生固定长度的字典。 然而,任何现有的霍夫曼字典仍用于压缩和扩展任何相关分区。
使用“按哈希值组织”子句定义的表空间无法压缩。
关于本任务
压缩数据时,高频出现的位串会被更短的串取代。 位串到替换位的映射信息存储在压缩字典中。 Huffman压缩使用 IBM® zSystems™ 硬件(在 IBM z14 或更高版本上)在存储数据之前对其进行压缩,并对缓冲池中从页面检索的数据进行解压缩。 在许多情况下,使用霍夫曼压缩可以大大减少存储数据所需的磁盘空间,但压缩率取决于数据的特性。
根据SQL的工作量和压缩量,压缩数据可能会带来以下性能提升:
- 缓冲池命中率更高
- 更少的输入/输出
- 减少getpage操作
过程
如果满足霍夫曼压缩的要求,以下操作将使用 IBM zSystems 霍夫曼压缩来压缩 Db2 数据:
