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

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

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

查看( 481 ) / 评论( 15 )
我的实验目的是证明:不同的会话做插入操作会选择不同的L1块,即使一个L1块内只使用了一个块。ITPUB个人空间0^!_H(u6F6V
ITPUB个人空间 y7F:]?x B.O Zsw%W(}D
实验环境:
5~P}eZ4N7OGZ ~0          块大小:8K;  区大小1M;  实验表只包含一个区,为插入行;ITPUB个人空间@.@2e3F8J
步一:先通过查看dba_segments视图找到段头,通过段头找到L2块,转储L2块,查看一共有
"W8] fiVz,if*E0
p&L#_9KA ALC0 几个L1,并记录其状态(L系列块的查找详见晶晶实验一,此处不再详述)ITPUB个人空间6Y,{"|aukXGIS6q N o

&K$DOaT\S0 *** 2008-02-15 21:57:39.593ITPUB个人空间;YD/I `S
Start dump data blocks tsn: 12 file#: 10 minblk 139 maxblk 139
eA ONuh0U4G0 buffer tsn: 12 rdba: 0x0280008b (10/139)
*z \&qs$A+Nm4ta0 scn: 0x0000.001e692e seq: 0x01 flg: 0x00 tail: 0x692e2101ITPUB个人空间1`@$gJ:yE|7z\
frmt: 0x02 chkval: 0x0000 type: 0x21=SECOND LEVEL BITMAP BLOCK
3o)|q9_*Y[ s `@0
J+?Y6G+L6m!f}0 Dump of Second Level Bitmap Block
^)c6[-\sT4j-m0    number: 2       nfree: 2       ffree: 0      pdba:     0x0280008c
!Yplt2MC$c$GWn0    Inc #: 0 Objd: 52188
Z;g0h3c3ZR0   opcode:0
-Q|&b6M(^d([0 xid:
vOM9T^,f,Ts1TB0   L1 Ranges :
s2J9w {d/JQ0   --------------------------------------------------------
4{E W0sr(B eb2?0    0x02800089  Free: 5 Inst: 1 ITPUB个人空间#xn:b$WTP
   0x0280008a  Free: 5 Inst: 1 ITPUB个人空间:Nm V?4jg(HT
  
Q1} G5J"s6[&TfYt0   --------------------------------------------------------
p6a7EK+X'k9{-`:B0 End dump data blocks tsn: 12 file#: 10 minblk 139 maxblk 139
\5V D!`6d(l)i]\0 ITPUB个人空间7c5p O3B v
发现此L2块中,有两个L1。ITPUB个人空间]| z_#_ gI#F

G5ft7rBT L X\0 转储其中一个L1块结果如下:  DBA Ranges :ITPUB个人空间.j a!{dRWAF"vTm0H
  --------------------------------------------------------ITPUB个人空间 t ve z&Z(W^'S
   0x02800089  Length: 64     Offset: 0      
E$mCP&E S,p9M0   
~ xY?VTX-@0    0:Metadata   1:Metadata   2:Metadata   3:MetadataITPUB个人空间 W:m*~)g \4a%M
   4:unformatted   5:unformatted   6:unformatted   7:unformattedITPUB个人空间0?'}2F?u~e#_
   8:unformatted   9:unformatted   10:unformatted   11:unformatted
IK*C_N0    12:unformatted   13:unformatted   14:unformatted   15:unformatted
M%enp SR0    16:unformatted   17:unformatted   18:unformatted   19:unformattedITPUB个人空间XXXr|{ tI"d
   20:unformatted   21:unformatted   22:unformatted   23:unformatted
R,V;N.Ws,w|0    24:unformatted   25:unformatted   26:unformatted   27:unformatted
q;HO:Zq{ op9~0    28:unformatted   29:unformatted   30:unformatted   31:unformatted
9gAd$YYV2b1Be0    32:unformatted   33:unformatted   34:unformatted   35:unformattedITPUB个人空间c;~t-Y2[XEA
   36:unformatted   37:unformatted   38:unformatted   39:unformatted
$HLg,Q9|}V8U7},Bnt0    40:unformatted   41:unformatted   42:unformatted   43:unformattedITPUB个人空间5n.HF v9K1i?5g
   44:unformatted   45:unformatted   46:unformatted   47:unformattedITPUB个人空间&Bh!igHza
   48:unformatted   49:unformatted   50:unformatted   51:unformattedITPUB个人空间bp.Z6r\
   52:unformatted   53:unformatted   54:unformatted   55:unformattedITPUB个人空间O8ts x M8]
   56:unformatted   57:unformatted   58:unformatted   59:unformatted
O t"T3sv$BP4J4l7F0    60:unformatted   61:unformatted   62:unformatted   63:unformattedITPUB个人空间A)P6o/^ RN
  --------------------------------------------------------
O6M E bp1v9zBV0 End dump data blocks tsn: 12 file#: 10 minblk 137 maxblk 137
m m1k\Qw8a6O0 因目前表为空,L1的64个数据块都是未格式化的,参考段头的转储信息,得知高高水点和低
7YV-w\6w scG6hh0
8Z-V` bl4Q`,m0 高水点都是141。ITPUB个人空间b p^)\bR;_7j+q

"j}#K;F|.m1n-^B0 步二,插入一条记录,此记录2000个字节。(命令略...)
)kvV+E9OuDg.nuc0
!MJO*vWe2c$qB0 步三,查看此记录被插入进哪个块,命令如下:ITPUB个人空间 HN%|D+hF+g1k S,t
ITPUB个人空间}L+Z'gpl)Z7^ wQ-f }L
SQL> select dbms_rowid.rowid_block_number(rowid) from new2_jj_1;
4BP+eJBKB @0 ITPUB个人空间.d;@I9r$B
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)ITPUB个人空间/?wi:Y;s? n&Rd
------------------------------------ITPUB个人空间!Bf m rZ,f3w$k
                                 162ITPUB个人空间)\Xwe e JK/s0\uk
第一个L1中块的范围是137-->200块,此记录被插入进162号块,证明被插入在第一个L1中,ITPUB个人空间!nj G)v wt
ITPUB个人空间7`Tt1[$|B ~
转储当前此L1块,状态如下:
`1z Fz!~L3Q#]0~o0 ITPUB个人空间t*wT)iWl1[-n L0?0k
  --------------------------------------------------------
:A`'i l5_ r8?r0   DBA Ranges :
;E5w3V4r0y:E o0   --------------------------------------------------------
`.s9L6g0x0    0x02800089  Length: 64     Offset: 0      
0~.|;G0rD(Wj-^~O$c0   
Y&J@5y'zu F3Qv0    0:Metadata   1:Metadata   2:Metadata   3:Metadata
BYv/`.hM0    4:unformatted   5:unformatted   6:unformatted   7:unformatted
B?.V$\u#r0    8:unformatted   9:unformatted   10:unformatted   11:unformattedITPUB个人空间W!l^9?7Di
   12:unformatted   13:unformatted   14:unformatted   15:unformattedITPUB个人空间U:do }2i{0BQ}
   16:75-100% free   17:75-100% free   18:75-100% free   19:75-100% freeITPUB个人空间0|j/O'wbr5K`Z
   20:75-100% free   21:75-100% free   22:75-100% free   23:75-100% freeITPUB个人空间 m;Ms\ fS] ^G
   24:75-100% free   25:50-75% free   26:75-100% free   27:75-100% free
$r(o DAL+m2sQ#l+S0    28:75-100% free   29:75-100% free   30:75-100% free   31:75-100% free
N0QiS/t{KhaE0    32:unformatted   33:unformatted   34:unformatted   35:unformattedITPUB个人空间 ` N)cx-J-X3?]
   36:unformatted   37:unformatted   38:unformatted   39:unformatted
/F/p {V3ii0    40:unformatted   41:unformatted   42:unformatted   43:unformattedITPUB个人空间"l{%AH? sXG@
   44:unformatted   45:unformatted   46:unformatted   47:unformatted
5?'u(Ffn3Bc:@0    48:unformatted   49:unformatted   50:unformatted   51:unformattedITPUB个人空间Y4A&E/I#N[4\
   52:unformatted   53:unformatted   54:unformatted   55:unformattedITPUB个人空间S^0o3|)V,n
   56:unformatted   57:unformatted   58:unformatted   59:unformattedITPUB个人空间&|%CY7d9C
   60:unformatted   61:unformatted   62:unformatted   63:unformatted
0n$k Kmrk(yM0   --------------------------------------------------------ITPUB个人空间!s c M j4Jy*c1j tP
End dump data blocks tsn: 12 file#: 10 minblk 137 maxblk 137ITPUB个人空间? G5?,sV?#hu
               从上面可以看到Oracle一次格式化16个块。ITPUB个人空间f-u `&[pF:x D
再转储段头,得知高高水点现在是201号块,它是第2个L1块中所表示的第一个数据快的编号。
*b`WZ_$zYn0
Is(oz)w0 **小结:高高水点的变化,1,如果一个L1能表示完一个区内所有的块的时候,Oracle移动高高水点,一次一个区。2如果区比较大,需要多个L1表示,那么Oracle是把它移动到下个L1块所表示的第一个数据块。ITPUB个人空间bw(Fs^Pl
ITPUB个人空间^Y/gy6R/y:{+?7e
步四:换个会话再向该表插入一条记录
`5{ ] ^ u4b da x0 步五:查看此记录被插入进哪个块
9}u,[%cy$Q!z0 SQL> select dbms_rowid.rowid_block_number(rowid) from new2_jj_1;
'|5Ml(t N0xb9cv0
d%lL"m{#m0 DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
M\5`xG&U)^#hm0 ------------------------------------ITPUB个人空间GI{;o~"LY+m,r3Yu
                                 157ITPUB个人空间4r2R7S/d5@7i
                                 162ITPUB个人空间jN.QcdQc
此结果证明,该记录仍然被插入在同一个L1块中。ITPUB个人空间[B#f;s] O&Aq4qCP

e d w OiC3c(`Q0        为什么没有象我设想的结论一样,不同的会话插入在不同的L1块中呢??
CoV+BC0
"[&\*XLk CW4`0 结论:第2个L1块在高高水标记之上,并没有被纳入到插入的可选范围内。之后我又多开了N个会话去实验,在高高水标记没有移动之前,所有插入都被送入第一个L1块下属的数据块中。ITPUB个人空间i;@L/L+sE$l r{

\(E@pG%X0 如果高高水标记移动后,第2个L1块 会在选择范围之内吗??
E}-Z.gyLgF*b0 步六:插入N条记录,直到占满第一个L1块中所属的数据块(命令略..)ITPUB个人空间ztdX}A
      再转储段头,得知 高高水标记已经移动;
z!n%z!sEp0 步七:删除表,并提交。因为刚才的插入操作已经占满了第一个L1块(不可使用截断,因为截断将释放表的区,)
f-Hl)?^I0 步八:分别开两个会话,做插入操作。ITPUB个人空间s%nBDwJ
步九:查看此记录被插入进哪个块
+t*T C}2T5Veu0 SQL> select dbms_rowid.rowid_block_number(rowid) from new2_jj_1;
G;@8x X FQ5_0 ITPUB个人空间,Z:k,vf`
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)ITPUB个人空间 i9P }&?gJ
------------------------------------ITPUB个人空间$Tcj4k)z%@h
                                 157
$y`u4fA7]t0                                  222
j~Tdm'i0 ITPUB个人空间-D0MV,mJ}R"},Q
因L1块的范围是137->200,由此可见,两条记录被分别插入进两个L1块所表示的数据块。ITPUB个人空间"n$z%BE1og
Oracle 并不以块是否有事务来选择插入进某个块中,而是以进程的PID 随机选择,因此以上插入操作提交与否并不影响最终结果.ITPUB个人空间y{R eBt
ITPUB个人空间a+k Mr0_"M
[ 本帖最后由 晶晶小妹 于 2008-2-15 23:10 编辑 ]

TAG:

晶晶小妹的个人空间 晶晶小妹 发布于2008-02-15 23:09:35
今天晚上已经整理了两篇咯,好累..1]Z/WI'Z!^
才发现就算整理好的笔记再发上来也是很累人的,有的时候不得不再配置个环境再来一次!
9^L8a9GD/h@诚向各位前辈请教!^_^!ITPUB个人空间n\}cU$M#R
明天继续...
magic007的Oracle空间 magic007 发布于2008-02-15 23:18:37
虽然DSI402上面对ASSM讲得比较我清楚,但还是要支持一下这样研究并共享的行为p[eM3U/x1TGz

pmCo0u[ 本帖最后由 magic007 于 2008-2-15 23:25 编辑 ]
idoi发布于2008-02-16 09:09:24
继续支持
烟囱的个人空间 烟囱 发布于2008-02-16 12:14:38
献花 space.itpub.netO3Q!kL        h$zr
楼主辛苦.学习中...
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-16 12:52:33

QUOTE:

原帖由 magic007 于 2008-2-15 23:18 发表 space.itpub.net.C;VwCKB6{
虽然DSI402上面对ASSM讲得比较我清楚,但还是要支持一下这样研究并共享的行为
diJCh _*O^3s6R

/OEZoGoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netDSI402上面没有对ASSM的实例嘛~~
O{Rs `$y.z0c}(R)L @偶就是找个小实验来验证一下上面的理论 嘿嘿 !^_^!
\V6fpy\Lspace.itpub.net
GGwT        Y7G LKITPUB个人空间7Z-QoUp1]~
在此 万分感谢各位的支持,大家的支持就是对我最大的鼓励,我会继续努力的!
shiri512003发布于2008-02-16 14:03:22
楼主现在都看什么资料呀??
iNS(Mv/p%YITPUB个人空间好像DSI都研究完了~ k^+i]Jmj,?l^
^_^
棉花糖ONE发布于2008-02-16 14:06:38
楼花真牛,学习,可否留msn,qq啥的啊
shiri512003发布于2008-02-16 14:12:22
棉花oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net7_jt7in7a+Y)U/]
别跟我抢我已经先要了J.ump(~t)z
o(∩_∩)o...哈哈
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-16 14:32:23
嘻嘻~~在网上能找到DSI都看了,现在就是想总结一下!oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netLS4Q?PH7qE
MSN:jjxm@live.cn
T9m*UZ
V)?]
QQ:522439797oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net#`
B-nE;W S

大家一起交流..学习..进步..!^_^!
!G}U%VSITPUB个人空间
h}9lD \]9L8pspace.itpub.net[ 本帖最后由 晶晶小妹 于 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
有不少坛友问我,为什么会有两个高水点!在此补充一点!space.itpub.netC$Q6Y&N0x!Gz]m'y

&T*\kM]pl        P  最初设置高水点的目的,是为了标记出来此标志之上的块都是未用块,全表扫描可以少扫描些块,因为分给表的块,可能不是全部都被格式化的.oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net3q$Rr6M M"kb
Qw
UY

oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
G,AB-|4{'q(@

  我没有仔细研究过手动段空间管理的插入时块占用的规则,以有资料表明:当需要空块时,高水标记一次向上扩充5个,等空块不够时,再会扩充5个,这样只需要一个高水标记就可以将以格式化块和未格式化块分开了...因为他的块使用是连续的
G5y(|)b)UUgsspace.itpub.net  在ASSM 中,块的分配不是连续的,例如:现在表有100个空块.MSSM 是从头开始一次5个一次5个的推进高水标记.而ASSM 有可能先占用中间的块..例如:格式化了17--32号块 这样高水点可以一下提升到第33号块,但是高水点之下,1--16号块还是未格式化的呢...违背了高水点之下都是以使用块的规则..所以在ASSM中,又定义了低高水点这样一个概念,继续刚才的例子:低高水点应该是第一号块,高高水点是33号块,在高低水点之间.是格式化和未格式化的混杂,在低水点之下 应该才是真正全部已格式化的.在高水点之上全部是未格式化的.. oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netf [iK9]*n

$Z.|4x)iI`oQF1O0N归跟到底,就是为了提高插入时的并行度,在ASSM中.块的占用并不是按顺序的.space.itpub.nete&X
QbV6iZ


%Y[&~r-VY高低水点都可以在段头的dump中看到.

Hes
Bmr X ]\space.itpub.net
oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net*bX$i*Bvb#t
高高水点:Highwater::q4E7O3~-X._0i`*h
低高水点:Low HighWater Mark :space.itpub.net        iV4li9N7@.x,_        R
7^lP0} ~2WI9Y        _
[ 本帖最后由 晶晶小妹 于 2008-2-18 16:06 编辑 ]
hbwp2008的个人空间 hbwp2008 发布于2008-02-18 16:06:21
LZ有多少年经验呀?
williamshcx发布于2008-02-18 17:16:10
支持
lkypy发布于2008-03-12 14:08:07
结合kamus那天所讲的内容,焕然大悟。精辟
我来说两句

(可选)

日历

« 2008-09-05  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

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

RSS订阅

Open Toolbar