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

字典管理表空间是通过两个数据字典uet$和fet$管理,uet$数据字典中存储的是tablespace中已经使用extent,fet$中存储的是tablespace中空闲的extent,当segment中需要分配新的extent时,也就是需要建的segment或者一个segment需要分配新的extent时,oracle就会从fet$查找extent列表,找到的extent编号A吧用于新extent需求,马上这个编号A的extent中会写入uet$这个数据字典中;同样当删除一个segment或者从segment中移除一个extent时,先从uet$中删除extent记录然后插入到fet$中去。

此种方式的发生过程是连续的,串行的,非常容易造成竞争和等待,数据字典的竞争;上述的数据字典的修改同样会产生redo log和undo log,oracle同样要维护上述的log消耗资源。

还有一个就是空间碎片,由于不断的请求分配extent,而tablespace中的extent在物理上是不连续的、oracle每次寻找一个空闲的extent时,就会把自由的extent划分为细小的extent,然后oracle找一个空闲的足够使用的extent已经越来越难,导致空间分配的速度减慢;大量的空闲的细小的extent被浪费,虽然smon可以周期的合并extent来,但是需要设置pctincrease为非0,而非0将产生更多的细小的extent;空间释放,当drop一个大的table,将不仅需要维护指定的table还要维护uet$和fet$,浪费时间的非常的可怕。

local management tablespace 本地管理tablespace是通过在数据文件中放置一个位图来管理tablespace。

create tablespace test

datafile

extent management local

allocate|uniform |size 128k

oracle在每个数据文件的头部放置一个位图,位图中记录的所有的数据文件中的extent的使用情况,分配或者回收extent时,tablespace直接就操作位图避免了数据字典中繁琐的漫长的竞争,仅仅操作数据文件的头部的几个数据块,不需要和数据字典进行维护,效率要比字典管理高的多,在并发性比较的强的tablespace中更多明显。

对于默认的db_block_size 8KB的block,在数据文件头部保存了8个数据块来维护extent,通过转储数据文件可以查看里面的具体的信息

alter system dump datafile datafile_id block max block_id block min block_id

查看block_id和datafile_id,可以查看dba_extents数据字典视图,里面记录了所有的segment中extent的信息,包括extent_id,block_id,file_id,也就是一个segment中extent的数据文件位置,数据块的信息。通过上面的转储可以去udump用户跟踪日志中查看trace文件来查看;自行查看了一下db_block_size 8KB中的block_id 1和block 2的记录的是文件头信息,block_id 3开始记录的位图的信息,当然里面的trace个人也不是很懂。

tom在oracle9i和10i编程艺术中记录:得到一个段位图将记录设置为1,删除一个段位图将记录设置为0,可以实例转储一下数据块来实际看看,至于里面的具体block 位图的具体信息超过个人的学习能力。

位图管理代替字典管理避免了递归字典管理带来的消耗(uet$和fet$一个insert 一个delete);避免了空间碎片的大小,可以执行allocate|uniform size number来统一规定exten大小,不分配则oracle按递归算法来自行分配extent的大小,使用allocate和uniform解决了空间碎片的问题,空间分配效率提高。

[@more@]

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

转载于:http://blog.itpub.net/25362835/viewspace-1052831/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值