可变大小区(Variable-Size Extents)

6.8  可变大小区(Variable-Size Extents)(4)

也就是该磁盘组有8块磁盘,A、B、C表示不同的Stripe Chunk,每个chunk为128K大小。某ASM file的第一个chunk分配在disk1的第1个ASM file extent中,第2个chunk分配在disk2的第一个extent中,按此规律,一直分配到第8个chunk在disk8的第一个extent中,接下来第9个chunk(也就是上图中的I)又分配在disk1的第一个extent中,依次分配,直到该ASM file被完全条带化。

至于条带分配的宽度(如上例中是8),则由隐含参数_asm_stripewidth来决定,该参数默认值为8,通常我们不会修改该参数值。

由前面所讲述的背景知识我们知道,oracle在database instance的shared pool里存储extent map block,且extent map block和extent是一一对应的关系(在默认AU大小的情况下,一个extent的大小就是1M),如果我现在库的大小是1T,则我们可以计算出现在share pool里需要维护100万个extent map block。

Oracle意识到如果用ASM管理一个1T的库就需要维护100万个extent map block话,那随着所管理的库的容量越来越大,效率问题不容忽视。

MOS文档365468.1中这样写到:ASM metadata storage requirements for databases greater than 10TB can be very high introducing inefficiencies in opening ASM files and increasing memory used for ASM metadata。

于是在11g中,Oracle改变了extent的大小,extent的大小将不再永远是1MB,而是会随着分配extent数量的递增而改变。在Oracle Database 11gR1中的具体规则如表6-1所示。

表6-1 Oracle 11gR1中的规则

区  编  号

AU数量

区大小(au=1MB)

0~19 999

1

1MB

20 000~39 999

8

8MB

> 40 000

64

64MB

其示意图如图6-27所示(引自Oracle Database Storage Administrator's Guide 11g),可以看到自第20000个Extent开始,分配了8个AU单位。

 
图6-27  Oracle Database 11gR1中的规则示意图

我们可以稍微计算一下在Oracle 11gR1中相应的extent分配的情况。

AU=1MB,库的大小为1TB,则按照上述算法,oracle现在仅需分配53572个extent

 
 
  1. SQL> select 20000+20000+(1024*1024-20000-20000*8) /64 Extents from dual;  
  2.    EXTENTS  
  3. ----------  
  4.    53571.5 

AU=64MB(在Oracle 11g中在创建disk group时可以手工指定AU的大小),库的大小为1TB时,则按照上述算法,oracle现在仅需分配16384个extent:

 
 
  1. SQL> select (1024*1024/64) extents from dual;  
  2. EXTENTS  
  3. --------------  
  4.          16384 

AU=64MB(在Oracle 11g中在创建disk group时可以手工指定AU的大小),库的大小为100TB,则按照上述算法,oracle现在仅需分配62788个extent:

 
 
  1. SQL> select 20000 + 20000 + (100*1024*1024-20000*64 -20000*64*8)/(64*64) EXTENTS from dual;  
  2. EXTENTS  
  3. ------------------------------  
  4.                        62787.5 

在Oracle 11gR2中,规则又有所变化,具体如表6-2所示。

表6-2 Oracle 11gR2中的规则变化

区  编  号

AU数量

区大小(au = 1MB)

0~19 999

1

1MB

20 000~39 999

4

4MB

> 40 000

16

16MB

使用1MB的AU和固定大小区,对于10TB的数据库,大约需要90M来存储Extent Map;而对于16MB的AU,Extent Map仅占用大约5.5MB内存。Oracle在11g里引入了"可变的区大小"技术,可以显著缩短数据库的启动时间、降低Shared Pool的内存消耗,并且一举解决了以前在10g里用ASM来管理海量数据时候的效率问题(因为extent map block的数量再也不会像以前那样动辄上百万了)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值