新博客http://www.cnblogs.com/zhjh256 欢迎访问
分类: Oracle
2008-01-06 21:48:32
段压缩是Oracle 9i Release 2引入的一个问题,其消除了组成段的任何块内部的重复列值,其在块级别运作,自我包含,透明,并且无数据丢失。
块级别压缩机制的意义在于压缩程度很大的依赖于段中数据的顺序。假如一个EMP表中有一个名称为BOB的条目,如果它们存储在相同的块中,它们就会压缩,否则它们就不会压缩。因此压缩最好应用于这样一个表:数据以已知的顺序被加载进来。
使用较大的块通常比小块的压缩率好,这是因为32K的块比2K的块存储的数据多,类似的,较小的PCTFREE也会达到更好压缩率。
压缩数据块与正常数据块的区别仅仅在于有一个额外的符号表代表重复的值并存出一次。并且随后这个记号表用来指向重复的值。
在I/O相对于CPU更受限制的情况下,使用压缩数据块可以提高系统的性能。
只有在使用直接路径处理的情况下,才能达到压缩数据块的效果,如CREATE TABLE AS SELECT,INSERT /*+ APPEND */。如果使用正常的INSERT语句,新的行不会插入压缩块以及它们的符号表。
当先前的压缩块中的数据被更新时,它们将不再是压缩的,如果新值是冗余的,那么它们将是压缩的。如果新的值不在压缩表中,它们必须被插入新的未压缩块。这意味着它们必须被迁移到新的块(迁移行),即使原来的块中还有很多空间可用。