在 DB2 for Linux, Unix, and Windows 中的行压缩的最佳实践
2009-02-08 16:38:31 来源:WEB开发网这个 SQL 语句是用来判断压缩哪张表的好方法。你可以在某个特定模式下的所有表中选择表名以及节约页面的百分比。然后对节约页面的百分比用 ORDER BY 子句来找出从压缩中受益最多的表。如果你把这各表函数和 SYSCAT.TABLES 编目表进行连接,然后用增加的‘ npages ’值乘这张表所在的表空间的 PAGESIZE,再乘节约的百分比,最后你就可以计算出使用压缩节约出来的 gigabytes 数。你应该也看到了表的存储将会从压缩中得到最大的节约。
压缩使用表重组
一旦你决定了要压缩某个现有表,一个方法是对表启用压缩然后使用表重组命令来建立压缩字典。 当一个压缩字典建立好以后,及那个从实用程序堆中分配一个 10MB 在临时缓存里的空间,用于保存这个运算法则用于创建压缩字典的样本数据。
在重组、创建压缩字典时数据压缩也同时完成,这个过程中表处于离线状态。
表中的所有数据行都可以成为创建压缩字典的样本。在压缩之前,表的现有数据应该可以代表将在之后整个生命周期中插入的所有数据。
REORG TABLE 命令中添加了两个新的关键字,以使创建压缩字典变得更加容易了。默认关键字 KEPPDICTIONARY 用于检查用于判断这张表中是否已经有一个字典存在。如果压缩字典已经存在,它将在重组数据的时候被使用。如果不存在一个字典,就创建一个。如果没有字典存在,RESETDICTIONARY 关键字是指示创建一个新的压缩字典,如果有一个就覆盖它。
一旦表启用了压缩并通过重组表创来建了压缩字典,这张表中所有的数据都会被压缩而且从现在开始所有插入的数据也都将被压缩。
除非万不得已不要在重组数据过程中进行数据集群
使用 scan-sort 类型的 REORG 比使用 index-scan 类型的 REORG 创建压缩字典要更有效。此外,根据测试。当有相似的数据时,在对数据表的 10% 数据建立压缩字典的压缩率和对所有数据建立压缩表的压缩率是差不多的。
更多精彩
赞助商链接