li
  当前位置:主页 > 性能优化 > 文章内容
li
oracle ASSM内部存储研究大揭密
来源: www.itpub.net  作者: www.itpub.net    时间:2008-04-16   阅读:21  
本文章共25631字,分5页,当前第1页,快速翻页:
 
ASSM内部存储研究大揭密 Copy to clipboard
Posted by: piner
Posted on: 2003-08-22 16:29

因为ASSM的官方文档很少,经过多次的查证之后,终于弄明白了ASSM管理(BMB段管理)的内部机理,现在发表给大家共享.

因为资料有限,如果有错误,请大家指正

为了进一步让大家明白ASSM,先说明ASSM的基本情况!
-----------------------------------------------------------------------------------------------------
在920以前,表的剩余空间的管理与分配都是由链接列表freelist来完成的,因为freelist存在串行的问题因此容易引起往往容易引起段头的争用与空间的浪费(其实这一点并不明显),最主要的还是因为需要DBA 花费大量的精力去管理这些争用并监控表的空间利用。
自动段空间管理(ASSM),它首次出现在Oracle920里。有了ASSM,链接列表freelist被位图所取代,它是一个二进制的数组,能够迅速有效地管理存储扩展和剩余区块(free block),因此能够改善分段存储本质,ASSM表空间上创建的段还有另外一个称呼叫Bitmap Managed Segments(BMB 段)。
让我们看看位图freelist是如何实现的。我会从使用区段空间管理自动参数创建tablespace开始:
create tablespace demo
datafile '/ora01/oem/demo01.dbf '
size 5m
EXTENT MANAGEMENT LOCAL -- Turn on LMT
SEGMENT SPACE MANAGEMENT AUTO -- Turn on ASSM;
一旦你定义好了tablespace,那么表和索引就能够使用各种方法很容易地被移动到新的tablespace里,带有ASSM的本地管理tablespace会略掉任何为PCTUSED、NEXT和FREELISTS所指定的值。
当表格或者索引被分配到这个tablespace以后,用于独立对象的PCTUSED的值会被忽略,而Oracle9i会使用位图数组来自动地管理tablespace里表格和索引的freelist。对于在LMT的tablespace内部创建的表格和索引而言,这个NEXT扩展子句是过时的,因为由本地管理的tablespace会管理它们。但是,INITIAL参数仍然是需要的,因为Oracle不可能提前知道初始表格加载的大小。对于ASSM而言,INITIAL最小的值是三个块。
新的管理机制用位图来跟踪或管理每个分配到对象的块,每个块有多少剩余空间根据位图的状态来确定,如>75%,50%-75%,25%-50%和<25%,也就是说位图其实采用了四个状态位来代替以前的pctused,什么时候该利用该数据块则由设定的pctfree来确定。
使用ASSM的一个巨大优势是,位图freelist肯定能够减轻缓冲区忙等待(buffer busy wait)的负担,这个问题在Oracle9i以前的版本里曾是一个严重的问题
在没有多个freelist的时候,每个Oracle表格和索引在表格的头部都曾有一个数据块,用来管理对象所使用的剩余区块,并为任何SQL插入声明所创建的新数据行提供数据块。当数据缓冲内的数据块由于被另一个DML事务处理锁定而无法使用的时候,缓冲区忙等待就会发生。当你需要将多个任务插入到同一个表格里的时候,这些任务就被强制等待,而同时Oracle会在同时分派剩余的区块,一次一个。
有了ASSM之后,Oracle宣称显著地提高了DML并发操作的性能,因为(同一个)位图的不同部分可以被同时使用,这样就消除了寻找剩余空间的串行化。根据Oracle的测试结果,使用位图freelist会消除所有分段头部(对资源)的争夺,还能获得超快的并发插入操作
尽管ASSM显示出了令人激动的特性并能够简化Oracle DBA的工作,但是Oracle9i的位图分段管理还是有一些局限性的:
· 一旦DBA被分配之后,它就无法控制tablespace内部的独立表格和索引的存储行为。
· 大型对象不能够使用ASSM,而且必须为包含有LOB数据类型的表格创建分离的tablespace。
· 你不能够使用ASSM创建临时的tablespace。这是由排序时临时分段的短暂特性所决定的。
IXDBA.NET技术社区
· 只有本地管理的tablespace才能够使用位图分段管理。
· 使用超高容量的DML(例如INSERT、UPDATE和DELETE等)的时候可能会出现性能上的问题。


阅读更多内容1 · 2 · 3 · 4 · 5 · 下一页>>


  上一篇: oracle 9i特性之—在线表格重定义...   下一篇: bitmap index 的一点研究心得
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·oracle 9i特性之—在线表格重定义...
·oracle9i特性之数据库监控系列的...
·再谈ORA-01034 错误的解决办法
·oracle联机日志文件REDO LOGFILE...
·Oracle数据库日志文件深入分析
·ORA-03113:end-of-file on comm...
·ORA-00600:internal error code,...
·oracle 数据库的启动和关闭深入分...
·Oracle的sql*plus使用小结
·ORA-01578:Oracle data block co...
·bitmap index 的一点研究心得
·data guard应用的三种模式
·exp 的奇怪问题
·ora-04031处理过程,欢迎进行讨论
·Oracle Standby数据库专题探讨
·pga浅谈
·关于 cursor_sharing = similar
·关于 v$sysstat 与 v$filestat 中...
·statspack统计内容信息含义详解
·关于EXTENT MANAGEMENT LOCAL UN...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接