没有必胜的秘籍,没有方程式遵循~~ 要赢~~只有全身心的投入!

晶晶实验二插入时对L1块的选择篇

上一篇 / 下一篇  2008-02-15 23:06:38 / 个人分类:晶晶oracle实验系列

查看( 720 ) / 评论( 17 )
我的实验目的是证明:不同的会话做插入操作会选择不同的L1块,即使一个L1块内只使用了一个块。ITPUB个人空间/C%gW^`n~#^
ITPUB个人空间#Hb:g*WZE V.yD$x
实验环境:ITPUB个人空间_N2[jL-}r
         块大小:8K;  区大小1M;  实验表只包含一个区,为插入行;
6Q4VnV;e` }0 步一:先通过查看dba_segments视图找到段头,通过段头找到L2块,转储L2块,查看一共有
yDz l8Rp0
cdfhq&~0 几个L1,并记录其状态(L系列块的查找详见晶晶实验一,此处不再详述)
3`6s9NV7g Q!~ mI}0
Guxq B2@ y4b.r2Y0 *** 2008-02-15 21:57:39.593
fE6T"p%Y%R!u.w#P0 Start dump data blocks tsn: 12 file#: 10 minblk 139 maxblk 139
:y`G;VJ*B[8bT#rms0 buffer tsn: 12 rdba: 0x0280008b (10/139)ITPUB个人空间'Z8|%^-[V
scn: 0x0000.001e692e seq: 0x01 flg: 0x00 tail: 0x692e2101
J8xL-?+|/T0 frmt: 0x02 chkval: 0x0000 type: 0x21=SECOND LEVEL BITMAP BLOCK
;fx'h A G;WS0 ITPUB个人空间T u2[4mwyT
Dump of Second Level Bitmap Block
8di+w6x'F(y;c-s0    number: 2       nfree: 2       ffree: 0      pdba:     0x0280008c
._ f3M\,A:x&B0t K0    Inc #: 0 Objd: 52188ITPUB个人空间y HeI(l,{ L2pG:[
  opcode:0
0N/m{9[!L1n:F J0 xid:
'j"e7h0KP.rx0   L1 Ranges :
'G({"b.U|[j&D0   --------------------------------------------------------
3J,piX&P%l0    0x02800089  Free: 5 Inst: 1 ITPUB个人空间,X3j;J|Os f
   0x0280008a  Free: 5 Inst: 1 ITPUB个人空间1d'@ D:~#NL9VsX
  
@]aEb`2py0   --------------------------------------------------------ITPUB个人空间2s9k(acZH:CP4m
End dump data blocks tsn: 12 file#: 10 minblk 139 maxblk 139
8t2K2huEd S[0 ITPUB个人空间#@IZhU)u
发现此L2块中,有两个L1。
PR Z0x@j^0 ITPUB个人空间U8A(h\%o.P"C
转储其中一个L1块结果如下:  DBA Ranges :
$?0^[r7?Z0   --------------------------------------------------------ITPUB个人空间r7?WQ+R(lU
   0x02800089  Length: 64     Offset: 0      ITPUB个人空间"[,]E*M2I
  
K$WSJP QOqJ0    0:Metadata   1:Metadata   2:Metadata   3:Metadata
a#c,Y])g1HS0    4:unformatted   5:unformatted   6:unformatted   7:unformatted
7hu!V2M,S/q,Wu x0    8:unformatted   9:unformatted   10:unformatted   11:unformattedITPUB个人空间/r^}#bd Z
   12:unformatted   13:unformatted   14:unformatted   15:unformatted
!n s4|n&l2e~0    16:unformatted   17:unformatted   18:unformatted   19:unformatted
?9V5ku r N&P] R0    20:unformatted   21:unformatted   22:unformatted   23:unformatted
s'J$g+h4\0    24:unformatted   25:unformatted   26:unformatted   27:unformattedITPUB个人空间g"B6w"oE} @
   28:unformatted   29:unformatted   30:unformatted   31:unformattedITPUB个人空间 @7SD9j6g9?;e
   32:unformatted   33:unformatted   34:unformatted   35:unformattedITPUB个人空间:SLq)k`{
   36:unformatted   37:unformatted   38:unformatted   39:unformattedITPUB个人空间"Q L'kGQ_e8`)sz"mS
   40:unformatted   41:unformatted   42:unformatted   43:unformattedITPUB个人空间 ]n7t bv/f#\%k.T
   44:unformatted   45:unformatted   46:unformatted   47:unformatted
$TAJ VF;F&szReI0    48:unformatted   49:unformatted   50:unformatted   51:unformatted
]&J@I&[iCtV0    52:unformatted   53:unformatted   54:unformatted   55:unformatted
1PM)X/_V-Y wi)|0    56:unformatted   57:unformatted   58:unformatted   59:unformatted
%b,u ?1cJ9](_0    60:unformatted   61:unformatted   62:unformatted   63:unformatted
a)TP&o!a0   --------------------------------------------------------
2A7]5`Hx$Q9p)a0 End dump data blocks tsn: 12 file#: 10 minblk 137 maxblk 137ITPUB个人空间/e5m6\(T)`x@&E:[
因目前表为空,L1的64个数据块都是未格式化的,参考段头的转储信息,得知高高水点和低
vR7u1vP0 ITPUB个人空间cUt/Ty
高水点都是141。ITPUB个人空间^AIu&Q!Q

pzL6jBz(?.`o0 步二,插入一条记录,此记录2000个字节。(命令略...)ITPUB个人空间 xg\&lL
ITPUB个人空间C!rN0v)K8?dU/f
步三,查看此记录被插入进哪个块,命令如下:ITPUB个人空间"NS$[]b{FFP

JF2@~/x0P.~P0x0 SQL> select dbms_rowid.rowid_block_number(rowid) from new2_jj_1;ITPUB个人空间"]$lvB+l yuw z

6e0n+eum*T'x0 DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
7zI;h"S#t G#a0 ------------------------------------
M;w2kL\H#cd*e#A&Q0                                  162ITPUB个人空间 K4j'~nSA
第一个L1中块的范围是137-->200块,此记录被插入进162号块,证明被插入在第一个L1中,ITPUB个人空间BY'qH-~}xi
ITPUB个人空间g jl7rv R(Z^
转储当前此L1块,状态如下:ITPUB个人空间#t.bzFZ~ CK`
ITPUB个人空间yZg4tws gX&p*T
  --------------------------------------------------------ITPUB个人空间8{%V s5H6uz2j5k]
  DBA Ranges :
J5anVW2kJ L%NG0   --------------------------------------------------------
7O:H ^3H5pTq}$~P?0    0x02800089  Length: 64     Offset: 0      ITPUB个人空间-P9A.Rz}T
  
?{(l T4Ry2Om0    0:Metadata   1:Metadata   2:Metadata   3:MetadataITPUB个人空间9[#T?%s3mxO
   4:unformatted   5:unformatted   6:unformatted   7:unformatted
C.M(]0Kn[0    8:unformatted   9:unformatted   10:unformatted   11:unformattedITPUB个人空间V7Wzi9l%t
   12:unformatted   13:unformatted   14:unformatted   15:unformatted
5@(k KL BV/Q.` C#U0    16:75-100% free   17:75-100% free   18:75-100% free   19:75-100% freeITPUB个人空间3Y"~ bC7V-`4E
   20:75-100% free   21:75-100% free   22:75-100% free   23:75-100% free
C!d.b$yH4H BX0    24:75-100% free   25:50-75% free   26:75-100% free   27:75-100% free
Or/E6[\T2V3Xk0    28:75-100% free   29:75-100% free   30:75-100% free   31:75-100% free
J|4z:CC0    32:unformatted   33:unformatted   34:unformatted   35:unformatted
T |6b e ?n6t;K0    36:unformatted   37:unformatted   38:unformatted   39:unformatted
0Iv6~]*_K#X%v0    40:unformatted   41:unformatted   42:unformatted   43:unformattedITPUB个人空间;v ?\ gW'Ktc
   44:unformatted   45:unformatted   46:unformatted   47:unformatted
;o^(\Nc_,h0    48:unformatted   49:unformatted   50:unformatted   51:unformattedITPUB个人空间 Iv9XM8W*Q#K'R
   52:unformatted   53:unformatted   54:unformatted   55:unformattedITPUB个人空间J)r;e$NX-y
   56:unformatted   57:unformatted   58:unformatted   59:unformatted
1J'`)Pp3d3Nh I0    60:unformatted   61:unformatted   62:unformatted   63:unformatted
/L O w g8Z3wO0   --------------------------------------------------------
k1aXmhq2@x%t0 End dump data blocks tsn: 12 file#: 10 minblk 137 maxblk 137
AG.H {8V^9_~0                从上面可以看到Oracle一次格式化16个块。
no%o H,DYH0 再转储段头,得知高高水点现在是201号块,它是第2个L1块中所表示的第一个数据快的编号。
L Y6~Hm0
&weG5N0c0 **小结:高高水点的变化,1,如果一个L1能表示完一个区内所有的块的时候,Oracle移动高高水点,一次一个区。2如果区比较大,需要多个L1表示,那么Oracle是把它移动到下个L1块所表示的第一个数据块。ITPUB个人空间-O!];z&S"w TQ(P
ITPUB个人空间0Wk,m.m5Y.C(S ADm _
步四:换个会话再向该表插入一条记录
q;{ mv9oGIh0 步五:查看此记录被插入进哪个块ITPUB个人空间,? u | vvy:g4nh4U%_
SQL> select dbms_rowid.rowid_block_number(rowid) from new2_jj_1;
'j@p@`N`0RA'A0 ITPUB个人空间%q+} S;[6r5P
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)ITPUB个人空间eS h z k
------------------------------------
@/FLuVZ:u0                                  157ITPUB个人空间9_j&|2m;ou2P4UN9P
                                 162
-p#hcC)Uf W2yAez/l0 此结果证明,该记录仍然被插入在同一个L1块中。
5d.N#Q!}mY.}yo8I0
&q} nIv e7p`%w0        为什么没有象我设想的结论一样,不同的会话插入在不同的L1块中呢??ITPUB个人空间J(y$mZ't6y1Wk8^Y,E0A
ITPUB个人空间2KPP#e8u'`
结论:第2个L1块在高高水标记之上,并没有被纳入到插入的可选范围内。之后我又多开了N个会话去实验,在高高水标记没有移动之前,所有插入都被送入第一个L1块下属的数据块中。ITPUB个人空间ty [G}j

y I X;} S)uv&oc0 如果高高水标记移动后,第2个L1块 会在选择范围之内吗??
d Kq S1^0 步六:插入N条记录,直到占满第一个L1块中所属的数据块(命令略..)ITPUB个人空间3Uq'E4zj
      再转储段头,得知 高高水标记已经移动;
#X!rUEt4aDK0 步七:删除表,并提交。因为刚才的插入操作已经占满了第一个L1块(不可使用截断,因为截断将释放表的区,)
j&`[8F%m'J0 步八:分别开两个会话,做插入操作。ITPUB个人空间mPz$O\0j;m
步九:查看此记录被插入进哪个块ITPUB个人空间7{ bs*r2_,cV&O;L L
SQL> select dbms_rowid.rowid_block_number(rowid) from new2_jj_1;
YMC%P@b6_HO0
pXn)xi qPf {0 DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
@`*hVV Cm2H0 ------------------------------------ITPUB个人空间 pc @)^g1[8o.y
                                 157
~4n1yG ~2b*} F0                                  222
!FDx]}K0 ITPUB个人空间&p)P|w}^)e
因L1块的范围是137->200,由此可见,两条记录被分别插入进两个L1块所表示的数据块。
^ M@$d LX,g0 Oracle 并不以块是否有事务来选择插入进某个块中,而是以进程的PID 随机选择,因此以上插入操作提交与否并不影响最终结果.
6MD.K j(v;~U k0 ITPUB个人空间F$Z\1q_.k|g
[ 本帖最后由 晶晶小妹 于 2008-2-15 23:10 编辑 ]

TAG:

晶晶小妹的个人空间 晶晶小妹 发布于2008-02-15 23:09:35
今天晚上已经整理了两篇咯,好累.. x:TPJ
z*bwD

才发现就算整理好的笔记再发上来也是很累人的,有的时候不得不再配置个环境再来一次!
:W
~7}E
?jaspace.itpub.net
诚向各位前辈请教!^_^!2E$\Z{\ Q:i D(_t
明天继续...
magic007的Oracle空间 magic007 发布于2008-02-15 23:18:37
虽然DSI402上面对ASSM讲得比较我清楚,但还是要支持一下这样研究并共享的行为
7Cw.v*|        K9nh
],ZK,]uvnNoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net[ 本帖最后由 magic007 于 2008-2-15 23:25 编辑 ]
idoi发布于2008-02-16 09:09:24
继续支持
烟囱的个人空间 烟囱 发布于2008-02-16 12:14:38
献花
9}ymL y楼主辛苦.学习中...
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-16 12:52:33

QUOTE:

原帖由 magic007 于 2008-2-15 23:18 发表 oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net|p$Q?Ih?
虽然DSI402上面对ASSM讲得比较我清楚,但还是要支持一下这样研究并共享的行为
[+b.?tc0G        C4c0Yspace.itpub.net'g!pYB9d
j!ay.|

DSI402上面没有对ASSM的实例嘛~~
&Z`1j6G
[uPn9X'Y
偶就是找个小实验来验证一下上面的理论 嘿嘿 !^_^!ITPUB个人空间-sb        lje]

M2P'[
P6v
!K.e1o\H1f*?
在此 万分感谢各位的支持,大家的支持就是对我最大的鼓励,我会继续努力的!
shiri512003的个人空间 shiri512003 发布于2008-02-16 14:03:22
楼主现在都看什么资料呀??
LCi.B%z!f好像DSI都研究完了u p
~)wAIz*\

^_^
棉花糖ONE发布于2008-02-16 14:06:38
楼花真牛,学习,可否留msn,qq啥的啊
shiri512003的个人空间 shiri512003 发布于2008-02-16 14:12:22
棉花Y*Cmx!ks
别跟我抢我已经先要了ITPUB个人空间/] _H/_/W"t
o(∩_∩)o...哈哈
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-16 14:32:23
嘻嘻~~在网上能找到DSI都看了,现在就是想总结一下!/a-hr~(P        V(v
MSN:jjxm@live.cn+`d t?Q+e
QQ:522439797HSx9n5[ k(Dm
大家一起交流..学习..进步..!^_^!oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.neti|s%Jfl

_&~ ]5B4z
d&wITPUB个人空间
[ 本帖最后由 晶晶小妹 于 2008-2-16 14:52 编辑 ]
oracle_li发布于2008-02-16 21:21:54
顶最牛MM,向你学习!
蚊子窝 foxmile 发布于2008-02-17 20:10:37
棉花动心了。
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-18 16:05:16
有不少坛友问我,为什么会有两个高水点!在此补充一点!
7pm0[/cx b%i8Y
X;X q:i4O

  最初设置高水点的目的,是为了标记出来此标志之上的块都是未用块,全表扫描可以少扫描些块,因为分给表的块,可能不是全部都被格式化的.
R{x`
piRoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net

|o"`"~.U6Im  我没有仔细研究过手动段空间管理的插入时块占用的规则,以有资料表明:当需要空块时,高水标记一次向上扩充5个,等空块不够时,再会扩充5个,这样只需要一个高水标记就可以将以格式化块和未格式化块分开了...因为他的块使用是连续的 N)q#sF(P r
  在ASSM 中,块的分配不是连续的,例如:现在表有100个空块.MSSM 是从头开始一次5个一次5个的推进高水标记.而ASSM 有可能先占用中间的块..例如:格式化了17--32号块 这样高水点可以一下提升到第33号块,但是高水点之下,1--16号块还是未格式化的呢...违背了高水点之下都是以使用块的规则..所以在ASSM中,又定义了低高水点这样一个概念,继续刚才的例子:低高水点应该是第一号块,高高水点是33号块,在高低水点之间.是格式化和未格式化的混杂,在低水点之下 应该才是真正全部已格式化的.在高水点之上全部是未格式化的..
/s#u{z,X kITPUB个人空间space.itpub.netG-h?e
l,Sf3?s

归跟到底,就是为了提高插入时的并行度,在ASSM中.块的占用并不是按顺序的.'| Nfu,]9G

m
P%~H2H6B[
r]
高低水点都可以在段头的dump中看到.space.itpub.netiH        L/zV }{|U#c.J(b

5v)[1A;J9R?高高水点:Highwater::
,V'Z/n*v"x4V`v|.EITPUB个人空间低高水点:Low HighWater Mark :ITPUB个人空间_'~NY(o.`BW
ITPUB个人空间[1nD8IE
[ 本帖最后由 晶晶小妹 于 2008-2-18 16:06 编辑 ]
hbwp2008的个人空间 hbwp2008 发布于2008-02-18 16:06:21
LZ有多少年经验呀?
hcx williamshcx 发布于2008-02-18 17:16:10
支持
lkypy发布于2008-03-12 14:08:07
结合kamus那天所讲的内容,焕然大悟。精辟
venee_lee的个人空间 venee_lee 发布于2009-02-10 12:55:53
阐述得非常清晰。上了生动的一刻!
jieyancai发布于2009-02-10 13:39:02

QUOTE:

原帖由 晶晶小妹 于 2008-2-16 14:32 发表
oOw+n
]Fspace.itpub.net
嘻嘻~~在网上能找到DSI都看了,现在就是想总结一下!
*u9zsU~pvspace.itpub.netMSN:jjxm@live.cn
#It9O)Xmoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netQQ:522439797space.itpub.netx;F,}-E1TG
大家一起交流..学习..进步..!^_^!
oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
xv#c-]9PxQ.\

周末去开封玩,怎么联系呢?呵呵~~
我来说两句

(可选)

日历

« 2009-07-04  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 60693
  • 日志数: 32
  • 图片数: 4
  • 建立时间: 2008-02-15
  • 更新时间: 2008-05-29

RSS订阅

Open Toolbar