分享
 
 
 

ASSM内部存储研究大揭密

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

因为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。这是由排序时临时分段的短暂特性所决定的。

• 只有本地管理的tablespace才能够使用位图分段管理。

• 使用超高容量的DML(例如INSERT、UPDATE和DELETE等)的时候可能会出现性能上的问题。

ASSM到底是怎么回事,表是怎么结构的呢?

----------------------------------------------------------------------------------

关键字:ASSM,自动段管理

BMB Segment 位图块段管理

1、我们先创建一个本地管理的表空间,采用段自动管理方式

create tablespace demo

datafile '/ora01/oem/demo01.dbf '

size 50m

EXTENT MANAGEMENT LOCAL

--一定是本地管理

SEGMENT SPACE MANAGEMENT AUTO;

--ASSM管理的标志

2、创建同样一个表

SQL create table demotab ( x number ) tablespace demo

storage (initial 1000K);

Table created

我们指定初试区间大小是1000K

SQL select t.table_name,t.initial_extent,t.next_extent,t.pct_free,t.pct_used from user_tables t where t.table_name = 'DEMOTAB';

TABLE_NAME INITIAL_EXTENT NEXT_EXTENT PCT_FREE PCT_USED

------------------------------ -------------- ----------- ---------- ----------

DEMOTAB

1024000

10

可以看到,NEXT_EXTENT与PCT_USED都为空。

3、执行该过程,检查表的初始状态

SQL exec show_space('demotab');

Total Blocks............................128

Total Bytes.............................1048576

Unused Blocks...........................125

Unused Bytes............................1024000

Last Used Ext FileId....................7

Last Used Ext BlockId...................8

Last Used Block.........................3

从这里我们能看到一些该表的特性,其中最引人注意的就是表头了,占用了三个块的大小(128-125)

另外一个注意的地方就是该表从第8个块开始,但是实际上这里是错误的,应当是从第9个块开始,文件头占用了64K的空间等于8个块。

我们从dba_extent中也能看到这样的信息,实际上是从第9个块开始的。

SQL select t.segment_name,t.extent_id,t.block_id from dba_extents t where t.segment_name = 'DEMOTAB';

SEGMENT_NAME EXTENT_ID BLOCK_ID

-------------------------------------------------------------------------------- ---------- ----------

DEMOTAB 0 9

DEMOTAB 1 17

……

从这里可以看到,第一个区间的开始块是9

4、我直接开始分析第9,10,11个块(段头)

SQL alter system dump datafile 7 block 9;

System altered

SQL alter system dump datafile 7 block 10;

System altered

SQL alter system dump datafile 7 block 11;

System altered

Start dump data blocks tsn: 6 file#: 7 minblk 9 maxblk 9

buffer tsn: 6 rdba: 0x06800009 (7/9)

scn: 0x0000.00181a2c seq: 0x01 flg: 0x04 tail: 0x1a2c2001

frmt: 0x02 chkval: 0x30a6 type: 0x20=FIRST LEVEL BITMAP BLOCK

Dump of First Level Bitmap Block

--------------------------------

nbits : 4 nranges: 2 parent dba: 0x0680000a poffset: 0

unformatted: 13 total: 16 first useful block: 3

owning instance : 1

instance ownership changed at

Last successful Search

Freeness Status: nf1 0 nf2 0 nf3 0 nf4 0

Extent Map Block Offset: 4294967295

First free datablock : 3

Bitmap block lock opcode 0

Locker xid: : 0x0000.000.00000000

Highwater:: 0x0680000c ext#: 0 blk#: 3 ext size: 8

#blocks in seg. hdr's freelists: 0

#blocks below: 0

mapblk 0x00000000 offset: 0

HWM Flag: HWM Set

--------------------------------------------------------

DBA Ranges :

--------------------------------------------------------

0x06800009 Length: 8 Offset: 0

0x06800011 Length: 8 Offset: 8

0:Metadata 1:Metadata 2:Metadata 3:unformatted

4:unformatted 5:unformatted 6:unformatted 7:unformatted

8:unformatted 9:unformatted 10:unformatted 11:unformatted

12:unformatted 13:unformatted 14:unformatted 15:unformatted

--------------------------------------------------------

End dump data blocks tsn: 6 file#: 7 minblk 9 maxblk 9

Start dump data blocks tsn: 6 file#: 7 minblk 10 maxblk 10

buffer tsn: 6 rdba: 0x0680000a (7/10)

scn: 0x0000.00181a39 seq: 0x01 flg: 0x04 tail: 0x1a392101

frmt: 0x02 chkval: 0x2738 type: 0x21=SECOND LEVEL BITMAP BLOCK

Dump of Second Level Bitmap Block

number: 8 nfree: 8 ffree: 0 pdba: 0x0680000b

opcode:0

xid:

L1 Ranges :

--------------------------------------------------------

0x06800009 Free: 5 Inst: 1

0x06800019 Free: 5 Inst: 1

0x06800029 Free: 5 Inst: 1

0x06800039 Free: 5 Inst: 1

0x06800049 Free: 5 Inst: 1

0x06800059 Free: 5 Inst: 1

0x06800069 Free: 5 Inst: 1

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有