本地管理表空间_字典管理表空间_ASSM特点

字典管理表空间-DMT      本地管理表空间-LMT

字典管理表空间(Dictionary-Managed Tablespace简称DMT)8i以前包括以后都还可以使用的一种表空间管理模式,通过数据字典管理表空间的空间使用

Oracle使用两个字典来记录Extents的使用情况:SYS.FET$记录空闲的ExtentsSYS.UET$记录使用的Extents。在分配和释放分区时,都要修改者两个字典。属于DML操作,存在竞争,每个动作都是一个事务,会产生UNDO记录。需要周期性进行合并操作。效率低下

本地管理表空间(Locally Managed Tablespace简称LMT)8i以后出现的一种新的表空间的管理模式,通过位图来管理表空间的空间使用

通过数据头文件中的一个位图来记录文件中表空间的使用情况,每个BIT代表数据区,通过改变bit值来表示Extents的分配使用或释放,不属于DML操作,也不会产生UNDO记录,可以自动跟踪连续的空闲空间。带来的优势:不需要使用字典SYS.FET$SYS.UET$上的递归SQL调用;减少数据字典的竞争;不会产生UNDO记录;不再需要周期性合并操作。

例:创建了一个本地管理的表空间,区间统一大小分配为64K
SQL> create tablespace leonarding  
    datafile '/ora01/oem/ leonarding 01.dbf' size 100m  
   
extent management local uniform. size 64k; 

本地管理tablespaceLMT——LMT是通过把EXTENT MANAGEMENT LOCAL子句添加到tablespace的定义句法而实现的。和原来由字典管理的tablespaceDMT)不同,LMT会将扩展管理自动化,并保持Oracle DBA不会被用来指定管理扩展大小的NEXT存储参数。这个原则唯一的例外是在NEXTMINEXTENTS一起用在表格创建的时候。
  自动段空间管理(ASSM——ASSMtablespace是通过将SEGMENT SPACE MANAGEMENT AUTO子句添加到tablespace的定义句法里而实现的。通过使用位图freelist取代传统单向的链接列表freelistASSMtablespace会将freelist的管理自动化,并取消为独立的表格和索引指定PCTUSEDFREELISTSFREELIST GROUPS存储参数的能力。

自动段空间管理(ASSM)

920以前,表的剩余空间的管理与分配都是由连接列表freelist来完成的,因为freelist存在串行的问题,因此容易引起段头的争用与空间的浪费(其实这一点并不明显),最主要的还是因为需要DBA 花费大量的精力去管理这些争用并监控表的空间利用。

自动段空间管理(ASSM),它首次出现在Oracle920里。有了ASSM,连接列表freelist被位图所取代,它是一个二进制的数组,能够迅速有效地管理存储扩展和剩余区块(free block),因此能够改善分段存储本质,ASSM表空间上创建的段还有另外一个称呼叫Bitmap Managed SegmentsBMB 段)

Create tablespace leonarding
datafile '/ora01/oem/
leonarding 01.dbf '
size 10m
EXTENT MANAGEMENT LOCAL -- Turn on LMT
SEGMENT SPACE MANAGEMENT AUTO -- Turn on ASSM;

一旦你定义好了tablespace,那么表和索引就能够使用各种方法很容易地被移动到新的tablespace里,带有ASSM的本地管理tablespace会略掉任何为PCTUSEDNEXTFREELISTS所指定的值

当表格或者索引被分配到这个tablespace以后,用于独立对象的PCTUSED的值会被忽略,而Oracle9i会使用位图数组来自动地管理tablespace里表格和索引的freelist。对于在LMTtablespace内部创建的表格和索引而言,这个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 的局限性
  尽管 ASSM 显示出了令人激动的特性并能够简化 Oracle DBA 的工作,但是 Oracle9i 的位图分段管理还是有一些局限性的:
  
   1. 一旦 DBA 被分配之后,它就无法控制 tablespace 内部的独立表格和索引的存储行为。
   2. 大型对象不能够使用 ASSM ,而且必须为包含有 LOB 数据类型的表格创建分离的 tablespace
   3. 你不能够使用 ASSM 创建临时的 tablespace 。这是由排序时临时分段的短暂特性所决定的。
   4. 只有本地管理的 tablespace 才能够使用位图分段管理。
   5. 使用超高容量的 DML (例如 INSERT UPDATE DELETE 等)的时候可能会出现性能上的问题。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26686207/viewspace-717136/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26686207/viewspace-717136/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值