« Oracle的压缩块的初步研究之一 »
Research » http://www.anysql.net/research/oracle_compress_01.html 2006-08-17Oracle Compress是一种在DW中节约空间的有效方式, 虽然在Oracle 9i中有些bug, 但相信在以后的版本中会比较强壮的, 因为在MYDMP中不支持Compress 的表,我想在以后的版本中增强一些, 所以先做了一些简单的研究, 下面是我偶然在火车上发现的规律.
Compress需要一些额外的信息. 在Oracle中Compress是以块为单位的, 也就是说一个表的所有数据块中有的块可能是Compress的, 而有的却不是. 根据块中的信息就可以解压的, 而不需要查询数据字典.
我建了一张测试表, 只有两个字段(col1和col2), col1的值为"Compress1"和"Compress2", col2的值为"Compress Row1"和"Compress Row2", 我用不同的组合插入了很多记录, 发现一个块中存贮了709条记录. 这说明数据是压缩了(block_size=8192).
Compress块的结构有点类似于Cluster的块, 在块中显示的表数为2个, 其中Table 0为单词列表,或组合, 如对于上述值, 则有如下值组合:
tab0:
0 = Compress1
1 = Compress2
3 = Compress Row1
4 = Compress Row2
5 = 0 3
6 = 0 4
7 = 1 3
8 = 1 4
接下来Tab1是真正的表的记录:
tab1:
0 = 状态字节 事务位 字段数 5
1 = 状态字节 事务位 字段数 6
2 = 状态字节 事务位 字段数 7
3 = 状态字节 事务位 字段数 8
4 = 状态字节 事务位 字段数 6
5 = 状态字节 事务位 字段数 7
......
我只研究到这儿, 还要设计更复杂的表来测试和发现规律. 谢谢你的观看.


Recent Comments