暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle Extent管理方式

DB小榴莲 2020-12-16
2140

ORACLE有两种区管理方式:指定统一区大小和系统管理区大小。你的表空间采用什么方式来管理和分配区,取决于你创建表空间时使用的语句,关键子句EXTENT MANAGEMENT LOCAL

 

EXTENT MANAGEMENT LOCAL AUTOALLOCATE ==>系统管理区大小

 

EXTENT MANAGEMENT LOCAL UNIFORM ==> 手动指定区大小

 

使用AUTOALLOCATE,ORACLE会自动分配最小为64K的区,使用UNIFORM,ORACLE会分配用户指定大小的区。

 

如下分别创建系统管理的区和统一管理的区的表空间

 

CREATE TABLESPACE lmtbsb DATAFILE  '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M

     EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

 

CREATE  TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M

    EXTENT MANAGEMENT LOCAL UNIFORM SIZE  128K;

 

如果你在创建表空间时,没有指定区的管理方式,ORACLE会根据一些原则来判断使用哪种区分配方式:

 

如果CREATE TABLESPACE语句省略了DEFAULT storage子句,则数据库将创建自动分配区的本地管理表空间。

 

如果CREATE TABLESPACE语句包含DEFAULT storage子句,则数据库将考虑以下内容:

 

如果指定了MINIMUM EXTENT子句,则数据库将评估MINIMUM EXTENT,INITIAL和NEXT的值是否相等,并且还要看PCTINCREASE的值是否为0。如果是,则数据库将创建一个本地管理的统一区大小的表空间,其扩展大小为INITIAL的值。如果MINIMUM EXTENT,INITIAL和NEXT参数不相等,或者PCTINCREASE不为0,则数据库将忽略你指定的任何扩展存储参数,并创建本地管理的自动分配区的表空间。

 

如果未指定MINIMUM EXTENT子句,则数据库仅评估INITIAL和NEXT的值是否相等且PCTINCREASE是否为0。如果是,则表空间是本地管理的且统一区大小。否则是自动分配区大小的表空间。

 

创建一个指定区大小的表空间,创建一张测试表T2,并向其中插入一条记录,然后从视图dba_extents里看到关于区的分配情况。

可以看到,区号是0,从第14号数据文件的第128号块开始,一次分配了128个数据块,也就是从第128号块到257号块都是分配给这个区的(T2)。数据块的大小是8K,那么128个数据块就是128*8K=1024K,正好是1M,而这个值正是创建表空间时uniform的值。

 

0~127号块哪里去了?

 

位图块中通过二进制位来标记段中区的使用情况,一个二进制位对应一个区,二进制位为1代表该区已经被使用,二进制位为0代表该区空闲。

 

从第3号块开始到127号块,如果每个数据块的大小是8K,那么所有的位图块一共有8K*(127-3+1)=1000K*1024*8=8192000个二进制位,也就是说可以标记8192000个区。

 

当用户不断的往表中插入数据,首次分配的区空间被用尽,ORACLE会重新分配新的区,在重新分配新区之前,ORACLE会查找位图块中的二进制位的状态,找二进制位为0的区,分配给用户。在查找位图块的过程中涉及到一个查找效率的问题,就是说8192000个二进制位,如何快速从8192000个二进制位中拿到值为0的?

 

ORACLE使用标记位的方法解决这个效率问题,举个例子,当ORACLE来查看位图块中的二进制位,不需要从第一个二进制位开始往后找,而是只要看标记位就可以了,比如标记位是99,那么ORACLE会直接分配第100个二进制位对应的区,因为标记位是99就意味着第一个二进制位到第99个二进制位对应的区都已经被使用。

 

统一区大小管理,每次分配相同大小的区,系统管理的区,区的大小是不一样的,那么ORACLE如何用二进制位来表示大小不等的区?

 

因为对于系统管理的区,最小分配64K,那么ORACLE就用一个二进制位对应一个64K,当区大小变成1M,ORACLE用16(1024/64)个二进制位来标识这个区。有一个1M的区被分配,也就有16个二进制位(2字节)被标记为1,有一个1M的区被释放,这16个二进制位就会被标记为0。

----------------------------
长按下图二维码关注我,每篇涨点小知识!

最后修改时间:2021-07-14 15:20:11
文章转载自DB小榴莲,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论