Oracle的压缩块的初步研究之一

    Oracle 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
    ......

    我只研究到这儿, 还要设计更复杂的表来测试和发现规律. 谢谢你的观看.

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • Do you have glue? I need some here.
  • 你有胶水吗? 我这里需要一点.
  • I have some left.
  • 我剩下一些.
  • If you have more, please give me some.
  • 如果你有多的, 请给我.
  • Do you have my pencil?
  • 你拿了我的铅笔吗?
  • Yes, I have your eraser, too.
  • 是的, 我还拿了你的橡皮.