在 DB2 for Linux, Unix, and Windows 中的行压缩的最佳实践
2009-02-08 16:38:31 来源:WEB开发网把大表分别存放在它们自己的表空间里
如果在你的环境中有可能的话,在试图压缩这些表之前,把你的大表分别存放在它们自己的表空间中。
重组表通过指定 USE 子句给影子副本一个临时表空间。使用复制和重命名表的方法在 DMS 表空间中压缩大表。这个方法是创建一个新的 DMS LARGE 表空间,一个新表和新的索引,从当前的表中复制数据到新的表里,并对新表实施压缩。然后重命名当前的表到一个其他的名字然后把新表重命名为当前这张表的名字。这个重命名的方法只会造成几秒钟的离线避免了对这张表进行压缩造成这张表的长时间下线。一旦完成,老的表和表空间就可以删除了。
多张表在一张表空间中
如果你有表空间有很多表,考虑下执行下面步骤:
更改数据库管理表空间(DMS)从 REGULAR 到 LARGE 以获得更大的 RIDs,大 RIDs 让更多的数据存放在一个页面。
更改 DMS 表空间为 AUTORESIZE YES
在 DMS 表空间把表改为 COMPRESS YES 和 VALUE COMPRESSION 。(见本文其他地方关于 VALUE COMPRESSION 的信息)
在这张表空间中的重组从最小的表开始并使用一个临时表空间和 RESETDICTIONARY 选项。 HWM 只会增长一点,而且仅 HWM 下面空闲的表空间就可以用于下一张表的重组。
使用 DB2 LIST TABLESPACES SHOW DETAIL 命令。这个命令重置了恢复空间需要的表空间内部点。
重启 DB2 实例以刷新缓冲池和表空间在内存中的信息。
执行第二批表重组使用 INSPLACE 选项以释放在表空间在 HWM 下的空间。同样,REORG 表也是从小到大。
运行 DB2 LIST TABLESPACES SHOW DETAIL 命令。
重启 DB2 实例
更改表空间通过减少容器大小来恢复磁盘空间。
更多精彩
赞助商链接