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

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

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

查看( 1175 ) / 评论( 17 )
我的实验目的是证明:不同的会话做插入操作会选择不同的L1块,即使一个L1块内只使用了一个块。
(F.o7jig-?i0
F5{*m2YeM0 实验环境:
g,D#` j\'?&D$D2d0          块大小:8K;  区大小1M;  实验表只包含一个区,为插入行;
.iT0t[ e-S"y0 步一:先通过查看dba_segments视图找到段头,通过段头找到L2块,转储L2块,查看一共有
6D;gogH&N{:rE0
c0g)@5YVgRb(M2M0 几个L1,并记录其状态(L系列块的查找详见晶晶实验一,此处不再详述)
8?R)F`UzE0 ITPUB个人空间gk3Y!F;Uj
*** 2008-02-15 21:57:39.593ITPUB个人空间4K.d{^5c,W ab&]m
Start dump data blocks tsn: 12 file#: 10 minblk 139 maxblk 139ITPUB个人空间P6xT{({[%nhf {
buffer tsn: 12 rdba: 0x0280008b (10/139)
o-mM"Y9u&D6?0 scn: 0x0000.001e692e seq: 0x01 flg: 0x00 tail: 0x692e2101ITPUB个人空间:`kp~P$^
frmt: 0x02 chkval: 0x0000 type: 0x21=SECOND LEVEL BITMAP BLOCKITPUB个人空间9{%qj%gu

\dQZ2ES*BN0 Dump of Second Level Bitmap BlockITPUB个人空间"| FVk[US
   number: 2       nfree: 2       ffree: 0      pdba:     0x0280008c ITPUB个人空间?uX!{nnkz
   Inc #: 0 Objd: 52188ITPUB个人空间;hRAP$vY|
  opcode:0
keu\iCxw0 xid: ITPUB个人空间B&hdi6Wm;F
  L1 Ranges :ITPUB个人空间j%o_O M#JeH
  --------------------------------------------------------ITPUB个人空间(u*?"lp1c R
   0x02800089  Free: 5 Inst: 1 ITPUB个人空间^;D7{@Q[2y
   0x0280008a  Free: 5 Inst: 1 ITPUB个人空间E[+@4] e)P t
  ITPUB个人空间pq\5l{$lM3v N
  --------------------------------------------------------ITPUB个人空间-R7i$dETO8U
End dump data blocks tsn: 12 file#: 10 minblk 139 maxblk 139ITPUB个人空间 WT EF$e/c
ITPUB个人空间 uhR%r)n,dt,aI
发现此L2块中,有两个L1。ITPUB个人空间2La+~$qNbpY;M
ITPUB个人空间u YM R w D3h1OGX
转储其中一个L1块结果如下:  DBA Ranges :
[aK3]i,~ |0   --------------------------------------------------------ITPUB个人空间M(Y_1i6Mx7y9[-}
   0x02800089  Length: 64     Offset: 0      ITPUB个人空间"i` `Iu
  ITPUB个人空间.V4o(Z%e o:r
   0:Metadata   1:Metadata   2:Metadata   3:Metadata
M:dF*l,H l0    4:unformatted   5:unformatted   6:unformatted   7:unformattedITPUB个人空间0M,I$nY9rH
   8:unformatted   9:unformatted   10:unformatted   11:unformatted
!e \$G3l0^6Z7lg/K0    12:unformatted   13:unformatted   14:unformatted   15:unformattedITPUB个人空间7WUt'L o3|
   16:unformatted   17:unformatted   18:unformatted   19:unformattedITPUB个人空间3w&tn{gQ
   20:unformatted   21:unformatted   22:unformatted   23:unformattedITPUB个人空间f"SA r:V8fo
   24:unformatted   25:unformatted   26:unformatted   27:unformatted
5i*|BWs,[-R0    28:unformatted   29:unformatted   30:unformatted   31:unformattedITPUB个人空间g9xf"Sj
   32:unformatted   33:unformatted   34:unformatted   35:unformattedITPUB个人空间c3ENC(Sx
   36:unformatted   37:unformatted   38:unformatted   39:unformattedITPUB个人空间3j$|#QO~-?1}
   40:unformatted   41:unformatted   42:unformatted   43:unformatted
0X)\~ P8S:N0    44:unformatted   45:unformatted   46:unformatted   47:unformatted
LL|G6eBwzWL0    48:unformatted   49:unformatted   50:unformatted   51:unformattedITPUB个人空间(e? I.i*^j
   52:unformatted   53:unformatted   54:unformatted   55:unformatted
S xCV&G%P caN0    56:unformatted   57:unformatted   58:unformatted   59:unformatted
H:TJ4f0ja0    60:unformatted   61:unformatted   62:unformatted   63:unformattedITPUB个人空间%G"_A`9~\'da%sW3vY
  --------------------------------------------------------
-vn3Aus0 End dump data blocks tsn: 12 file#: 10 minblk 137 maxblk 137
O-UP SZ+?'u0 因目前表为空,L1的64个数据块都是未格式化的,参考段头的转储信息,得知高高水点和低ITPUB个人空间 \D#F1d;G(x'G `5P

8I-L FRhB"|0 高水点都是141。
-V;gVQ-n_x Q)K&?0 ITPUB个人空间"t.n:Kg R tiq/K
步二,插入一条记录,此记录2000个字节。(命令略...)
e/LCu"ER"{0
1ap!PY k?3HCt&H`0 步三,查看此记录被插入进哪个块,命令如下:ITPUB个人空间M/K0N!k.\&?!N

,s8pI c A5q)_0 SQL> select dbms_rowid.rowid_block_number(rowid) from new2_jj_1;
phJJ Nc0
DnK]DPZ0 DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
9|pczG'Cw0 ------------------------------------
ET u7Wb1_(v.R0                                  162ITPUB个人空间d[$V?!?$@^{4h!|
第一个L1中块的范围是137-->200块,此记录被插入进162号块,证明被插入在第一个L1中,
hP3_q n|+gP0
Sg\!N*m `.?L5Y1C0 转储当前此L1块,状态如下:
%M"Ya/VmtA\o0
t,rWzp%v h0   --------------------------------------------------------ITPUB个人空间yidA9^h
  DBA Ranges :
#J8xM6tK9yA0   --------------------------------------------------------
;X.ezz+Q]k0    0x02800089  Length: 64     Offset: 0      
j;I9G ~0Ma(`+W:t'pT0   ITPUB个人空间 r lPH~8A1~4f-y
   0:Metadata   1:Metadata   2:Metadata   3:Metadata
8BN T-S? j0    4:unformatted   5:unformatted   6:unformatted   7:unformatted
(X/KX'h Ztm!G0    8:unformatted   9:unformatted   10:unformatted   11:unformattedITPUB个人空间(j2Bh/|xW
   12:unformatted   13:unformatted   14:unformatted   15:unformattedITPUB个人空间-j#a2e.Mw3f1W
   16:75-100% free   17:75-100% free   18:75-100% free   19:75-100% free
9Z.u p}Tgz}0    20:75-100% free   21:75-100% free   22:75-100% free   23:75-100% freeITPUB个人空间 ^%}9B&Nuc`
   24:75-100% free   25:50-75% free   26:75-100% free   27:75-100% free
a'H&rE Vp0    28:75-100% free   29:75-100% free   30:75-100% free   31:75-100% freeITPUB个人空间%C/Gw9U;veTF/~{
   32:unformatted   33:unformatted   34:unformatted   35:unformatted
v(Z;q3S0J_"~0    36:unformatted   37:unformatted   38:unformatted   39:unformatted
#p.IpL n9X0    40:unformatted   41:unformatted   42:unformatted   43:unformattedITPUB个人空间9T-@ t5Zp#fQ/x kQ
   44:unformatted   45:unformatted   46:unformatted   47:unformatted
iow:PTgk0    48:unformatted   49:unformatted   50:unformatted   51:unformattedITPUB个人空间tmOS*g4b5E%G
   52:unformatted   53:unformatted   54:unformatted   55:unformattedITPUB个人空间y5bS9[,_k|
   56:unformatted   57:unformatted   58:unformatted   59:unformattedITPUB个人空间9Ib+~ D1`6[*SC
   60:unformatted   61:unformatted   62:unformatted   63:unformatted
YH-]G A0   --------------------------------------------------------
)LJw8t8[Jm*jb0 End dump data blocks tsn: 12 file#: 10 minblk 137 maxblk 137ITPUB个人空间]9Z d@6g
               从上面可以看到Oracle一次格式化16个块。ITPUB个人空间^1A sS#S e)bS#g
再转储段头,得知高高水点现在是201号块,它是第2个L1块中所表示的第一个数据快的编号。ITPUB个人空间F | ] QT6GF!_!e

/T`'R.L6W~,W'I Q` g0 **小结:高高水点的变化,1,如果一个L1能表示完一个区内所有的块的时候,Oracle移动高高水点,一次一个区。2如果区比较大,需要多个L1表示,那么Oracle是把它移动到下个L1块所表示的第一个数据块。ITPUB个人空间[0Nr8h2E p:Rt1OE
ITPUB个人空间 ZQ5uL7U"J
步四:换个会话再向该表插入一条记录ITPUB个人空间I8S/yb5m.L"x
步五:查看此记录被插入进哪个块
Z2koH g7I1B0 SQL> select dbms_rowid.rowid_block_number(rowid) from new2_jj_1;
-H4[yR:z$_-Q8P-^0
^"C p1K"hc K0H6}2V0 DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)ITPUB个人空间 XX*X&j9e+A"@Z m
------------------------------------
x4U1OSq6U#Ws:A*D0                                  157
nW3Gw%Fog0                                  162ITPUB个人空间-pN/t(H`T_+?
此结果证明,该记录仍然被插入在同一个L1块中。
@j n*\"W0
] T]T)v0        为什么没有象我设想的结论一样,不同的会话插入在不同的L1块中呢??ITPUB个人空间6hNr U%H,T\

@(_)O}&Sp\F0S0 结论:第2个L1块在高高水标记之上,并没有被纳入到插入的可选范围内。之后我又多开了N个会话去实验,在高高水标记没有移动之前,所有插入都被送入第一个L1块下属的数据块中。ITPUB个人空间`/F [ tlD}{
ITPUB个人空间sk7@+{5r o$d9@
如果高高水标记移动后,第2个L1块 会在选择范围之内吗??
:^7Y+QFN#V1D6U _0 步六:插入N条记录,直到占满第一个L1块中所属的数据块(命令略..)ITPUB个人空间 K(K!rv Y7daNwh
      再转储段头,得知 高高水标记已经移动;ITPUB个人空间9CZ2QC0g"_I
步七:删除表,并提交。因为刚才的插入操作已经占满了第一个L1块(不可使用截断,因为截断将释放表的区,)
e;t j8`eB f$Po-V3t0 步八:分别开两个会话,做插入操作。ITPUB个人空间)G6Bo gpg
步九:查看此记录被插入进哪个块
6u(Mf%c0F0Z!P0 SQL> select dbms_rowid.rowid_block_number(rowid) from new2_jj_1;ITPUB个人空间,f2L_Q]`
ITPUB个人空间,s F0`6q dhIE
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)ITPUB个人空间Yso mL|3N
------------------------------------ITPUB个人空间*@ U+k,|)H[hI6QU
                                 157
~MS:LA&i!FT@ z0                                  222ITPUB个人空间;D1x{LA*kCL/d
ITPUB个人空间O X N%Dkx:y0R.R7L:P
因L1块的范围是137->200,由此可见,两条记录被分别插入进两个L1块所表示的数据块。
']/y c'k4w)`+R0 Oracle 并不以块是否有事务来选择插入进某个块中,而是以进程的PID 随机选择,因此以上插入操作提交与否并不影响最终结果.ITPUB个人空间C2MH%Bm
ITPUB个人空间"w3l#n ?(O!R
[ 本帖最后由 晶晶小妹 于 2008-2-15 23:10 编辑 ]

TAG:

晶晶小妹的个人空间 晶晶小妹 发布于2008-02-15 23:09:35
今天晚上已经整理了两篇咯,好累..
qycfGB&?'kEspace.itpub.net才发现就算整理好的笔记再发上来也是很累人的,有的时候不得不再配置个环境再来一次!6nq+z
bq

诚向各位前辈请教!^_^!oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net{N3K__ @
明天继续...
magic007的Oracle空间 magic007 发布于2008-02-15 23:18:37
虽然DSI402上面对ASSM讲得比较我清楚,但还是要支持一下这样研究并共享的行为
@_m5|R j%Yspace.itpub.net
{[p^duspace.itpub.net[ 本帖最后由 magic007 于 2008-2-15 23:25 编辑 ]
idoi发布于2008-02-16 09:09:24
继续支持
烟囱的个人空间 烟囱 发布于2008-02-16 12:14:38
献花 oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net3MwUrY
楼主辛苦.学习中...
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-16 12:52:33

QUOTE:

原帖由 magic007 于 2008-2-15 23:18 发表
"VV(c(gu6Km虽然DSI402上面对ASSM讲得比较我清楚,但还是要支持一下这样研究并共享的行为
space.itpub.net#i'{_]'Ft        i
U

space.itpub.netp        D r(T2`4^oR8~
DSI402上面没有对ASSM的实例嘛~~S]sa2iut8]8u
偶就是找个小实验来验证一下上面的理论 嘿嘿 !^_^!ETfmz;T+U
ITPUB个人空间pLmlYAp|u6nO

s\A*p*uz*qITPUB个人空间在此 万分感谢各位的支持,大家的支持就是对我最大的鼓励,我会继续努力的!
shiri512003的个人空间 shiri512003 发布于2008-02-16 14:03:22
楼主现在都看什么资料呀??space.itpub.netS%g"c
Q NS.{#s/Ja2g

好像DSI都研究完了
(bh N(VK l^_^
棉花糖ONE的个人空间 棉花糖ONE 发布于2008-02-16 14:06:38
楼花真牛,学习,可否留msn,qq啥的啊
shiri512003的个人空间 shiri512003 发布于2008-02-16 14:12:22
棉花
2S7Tb/WqE\oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net别跟我抢我已经先要了
K.dS7}*j
}EITPUB个人空间
o(∩_∩)o...哈哈
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-16 14:32:23
嘻嘻~~在网上能找到DSI都看了,现在就是想总结一下!CP)oZ^ Y@`
MSN:jjxm@live.cnoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net~ J6p        vE;T$K#O
QQ:522439797*p(^%qHu$}
大家一起交流..学习..进步..!^_^!space.itpub.net"ZX+BCDS3PQT
0C Ki/z q\#Km
[ 本帖最后由 晶晶小妹 于 2008-2-16 14:52 编辑 ]
Pilgrim的个人空间 oracle_li 发布于2008-02-16 21:21:54
顶最牛MM,向你学习!
蚊子窝 foxmile 发布于2008-02-17 20:10:37
棉花动心了。
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-18 16:05:16
有不少坛友问我,为什么会有两个高水点!在此补充一点!v1@ b"G
n"D?U


kh)}.rz`5d  最初设置高水点的目的,是为了标记出来此标志之上的块都是未用块,全表扫描可以少扫描些块,因为分给表的块,可能不是全部都被格式化的.W,f9t;CJ@6h
3t#Xy MX
r
H9Ae h T

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

q4bF?YF2{joracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net归跟到底,就是为了提高插入时的并行度,在ASSM中.块的占用并不是按顺序的.
,i;f7XEt&y1HT8Doracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
^2W        |W"{P kkspace.itpub.net高低水点都可以在段头的dump中看到.FJ-mg        P?

1K.Op_|#|,_$|K$P高高水点:Highwater::/c0^S
Z        ?)\#N

低高水点:Low HighWater Mark :
k[B'H&tJ\oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netglp,c[3h0k|
[ 本帖最后由 晶晶小妹 于 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 发表
G r
Gl~
k!iHR-M
嘻嘻~~在网上能找到DSI都看了,现在就是想总结一下!
(_|3Z ^c u$DIspace.itpub.netMSN:jjxm@live.cn
]t8\d/C*UuITPUB个人空间QQ:522439797        u
LL}\mM3lz

大家一起交流..学习..进步..!^_^!
*E8f*N*Hi0?
周末去开封玩,怎么联系呢?呵呵~~
我来说两句

(可选)

日历

« 2012-02-10  
   1234
567891011
12131415161718
19202122232425
26272829   

数据统计

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

RSS订阅

Open Toolbar