ORACLE表空间区自动分配时的扩展策略初步研究

andzen 发表于 2005-12-30 14:14:48

       ORACLE 8i开始引入了新的表空间管理方式,本地管理表空间,相比以前的数据字典管理区信息,有效的解决了区分布的数据字典争用引起的性能问题.与此同时老版本对于规模特别大的表的区管理的存在的问题,引入了区自动管理策略,使得以前版本存在的区碎片太多的问题得到有效的解决,ORACLE本地管理表空间的"区管理"模式有两种:自动管理和统一分配;对于两种模式各有用途,现概描述如下.
       统一分配的时候每个EXTENT(区)的BLOCK个数是固定的,有表空间创建时候指定,对于表空间上的每个段都遵守该规则,创建表的时候不理会create table 时指定新的扩展参数.例如一个BLOCK大小为8K的系统,区统一分配大小为128K,此时SEGMENT(段)空间的扩展规律就是平均增长,每扩展一个区的时候大小均为128K,相当于16个BLOCK,这种扩展策略有利于表不是特别大的情况,很有效的防止SEGMENT里面会有大批的空白空间,最多的浪费不超过一个EXTENT的大小,但是对于VLDB某些非常大的表则会可能产生EXTENT过多的问题,例如一个表大小为2G(2000M),对于某些TB级别大型的信息系统,甚至20G,100G大小的表,如果按128K每个区大小,则会有16000个区产生,如此多的区,无疑给ORACLE的空间管理带来很大的的考验,如果增大每个区大小为1024K,此时仍将会有2000个EXTENT,当我们没有办法确切知道系统的表会有多大的时候,此时好且简单的解决方案是采用区自动分配模式;
       区自动分配模式时,ORACLE根据内部一套算法,来计算区的扩展策略,由于ORACLE并未公布其扩展算法的计算公式,所以此时需要我们自己去探究一下,可以肯定的是此算法一定是随着BLOCKs增加的时候,BLOCKs/EXTENTs是个增函数,所以为了大概量化估算其扩展策略,我们进行了64k--17000M范围的测试;得到如下一组数据如下,此数据是在[block size = 8k]下测试得到; 
区号                区数量     空间                  每区BLKs                       每区空间
---------------------------------------------------------------------------------------------------
0-15             16 个       0-1M                 每区 8          个BLK        64K
16-79           64 个       1-64 M             每区 128      个BLK        1M
80-199        120个      64-1024M        每区 1024   个BLK        8M
200-528      328个      1-22.8G            每区  8192   个BLK        64M
528以上         未测         未测                  未测                                未测 
上面最大的测试表的大小为22.8G的时候,区数仅仅528,区无限扩展的问题是很好的解决了,不过此时,对数据磁盘的浪费也是非常可观的,每扩展一个区就是几十上百M;所以针对上面两种管理模式,数据库设计者应该根据每个表的规模,选用不同的区管理策略,以求性能和空间的最优化.
                                                     

             nanshan.sz    2005.12.30




收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定