[20160728]]行連結行遷移與ITL槽3.txt
[20160728]]行連結行遷移與ITL槽3.txt
--上午測試了行連結行遷移與ITL槽的關係,連結如下:
[20160727]行連結行遷移與ITL槽2.txt => http://blog.itpub.net/267265/viewspace-2122663/
--如果仔細看前面的測試可以發現當出現行連結或者行遷移時,除了增加1個空itl槽像如下:
0x05 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
--並不重用原來的ITL槽,這樣導致每次插入都增加1個ITL槽,並使用它。你可以發現前面9個ITL槽.
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.004.0000d0c9 0x00c0024a.29fd.23 C--- 0 scn 0x0003.15762d70
0x02 0x000a.017.0000d0b7 0x00c00240.29fd.1c C--- 0 scn 0x0003.15762dfb
0x03 0x000a.00d.0000d0be 0x00c00240.29fd.25 C--- 0 scn 0x0003.15762e02
0x04 0x000a.006.0000d0c6 0x00c00240.29fd.2e C--- 0 scn 0x0003.15762e09
0x05 0x000a.014.0000d0c3 0x00c00240.29fd.35 C--- 0 scn 0x0003.15762e10
0x06 0x000a.00f.0000d0b8 0x00c00240.29fd.3c C--- 0 scn 0x0003.15762e17
0x07 0x000a.00c.0000d0b8 0x00c00240.29fd.43 C--- 0 scn 0x0003.15762e1e
0x08 0x000a.00a.0000d0d3 0x00c0024a.29fd.2c C--- 0 scn 0x0003.15762e25
0x09 0x0001.00e.00000f91 0x00c0049a.0817.0f C--- 0 scn 0x0003.15762e2c
0x0a 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
0x0b 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
0x0c 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
0x0d 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
--現在繼續測試:
1.環境:
SCOTT@book> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SCOTT@book> create table empx as select * from emp where 1=2;
Table created.
--在1個會話裡執行如下:
Insert into empx (EMPNO) Values (7369);
commit;
Insert into empx (EMPNO) Values (7499);
commit;
Insert into empx (EMPNO) Values (7521);
commit;
Insert into empx (EMPNO) Values (7566);
commit;
Insert into empx (EMPNO) Values (7654);
commit;
Insert into empx (EMPNO) Values (7698);
commit;
Insert into empx (EMPNO) Values (7782);
commit;
Insert into empx (EMPNO) Values (7788);
commit;
Insert into empx (EMPNO) Values (7839);
commit;
Insert into empx (EMPNO) Values (7844);
commit;
Insert into empx (EMPNO) Values (7876);
commit;
Insert into empx (EMPNO) Values (7900);
commit;
Insert into empx (EMPNO) Values (7902);
commit;
Insert into empx (EMPNO) Values (7934);
commit;
SCOTT@book> select rowid,empno from empx where rownum=1;
ROWID EMPNO
------------------ ------------
AAAXU/AAEAAAAI2AAA 7369
SCOTT@book> @ &r/rowid AAAXU/AAEAAAAI2AAA
OBJECT FILE BLOCK ROW DBA TEXT
------------ ------------ ------------ ------------ -------------------- ----------------------------------------
95551 4 566 0 4,566 alter system dump datafile 4 block 566 ;
SCOTT@book> alter system checkpoint ;
System altered.
SCOTT@book> alter system dump datafile 4 block 566 ;
System altered.
--//檢查轉儲:
Block header dump: 0x01000236
Object id on Block? Y
seg/obj: 0x1753f csc: 0x03.15767520 itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x1000230 ver: 0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.018.0000d119 0x00c0013b.2a08.2d --U- 1 fsc 0x0000.15767521
0x02 0x000a.00d.0000d10f 0x00c0013b.2a08.2e --U- 1 fsc 0x0000.15767523
bdba: 0x01000236
--你可以發現僅僅存在2個ITL槽。也就是如果事務提交,會話會重用ITL槽。
2.繼續回到原來的測試:
--// drop table t purge;
spool a.sql
select 'create table t (' from dual
union all
select 'col'||lpad(rownum-1,3,'0')||' number(2),' from dual connect by level<=1000
union all
select 'constraint t1_pk primary key (col000));' from dual ;
spool off
SCOTT@book> alter table t pctfree 0;
Table altered.
insert into t (col000,col766) values (1,1);
commit ;
SCOTT@book> select rowid,t.col000 from t ;
ROWID COL000
------------------ ----------
AAAXVAAAEAAAALuAAD 1
SCOTT@book> @ &r/rowid AAAXVAAAEAAAALuAAD
OBJECT FILE BLOCK ROW DBA TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
95552 4 750 3 4,750 alter system dump datafile 4 block 750 ;
3.插入一些資料看看ITL變化情況。
alter system dump datafile 4 block 750 ;
insert into t (col000,col255) values (2,2);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
--//出現1次行內連結
insert into t (col000) values (3);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
insert into t (col000) values (4);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
insert into t (col000) values (5);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
insert into t (col000) values (6);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
--//後面這些操作不會出現行內遷移,就就是分片。
$ sed -n '/Itl/,/bdba:/p' /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_64063.trc
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0003.018.000010bc 0x00c0009b.0c82.1a --U- 4 fsc 0x0000.1576762d
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x03 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
0x04 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
0x05 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0003.018.000010bc 0x00c0009b.0c82.1a --U- 4 fsc 0x0000.1576762d
0x02 0x000a.01c.0000d0de 0x00c00300.2a09.03 --U- 2 fsc 0x0000.15767778
0x03 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
0x04 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
0x05 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0003.018.000010bc 0x00c0009b.0c82.1a --U- 4 fsc 0x0000.1576762d
0x02 0x000a.01c.0000d0de 0x00c00300.2a09.03 --U- 2 fsc 0x0000.15767778
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 --U- 1 fsc 0x0000.1576777f
0x04 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
0x05 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0003.018.000010bc 0x00c0009b.0c82.1a --U- 4 fsc 0x0000.1576762d
0x02 0x000a.01c.0000d0de 0x00c00300.2a09.03 --U- 2 fsc 0x0000.15767778
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 --U- 1 fsc 0x0000.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 --U- 1 fsc 0x0000.15767786
0x05 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0003.018.000010bc 0x00c0009b.0c82.1a --U- 4 fsc 0x0000.1576762d
0x02 0x000a.01c.0000d0de 0x00c00300.2a09.03 --U- 2 fsc 0x0000.15767778
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 --U- 1 fsc 0x0000.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 --U- 1 fsc 0x0000.15767786
0x05 0x000a.010.0000d10b 0x00c00300.2a09.11 --U- 1 fsc 0x0000.1576778d
bdba: 0x010002ee
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.002.0000d116 0x00c00300.2a09.15 --U- 1 fsc 0x0000.15767794
0x02 0x000a.01c.0000d0de 0x00c00300.2a09.03 C--- 0 scn 0x0003.15767778
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 C--- 0 scn 0x0003.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 C--- 0 scn 0x0003.15767786
0x05 0x000a.010.0000d10b 0x00c00300.2a09.11 C--- 0 scn 0x0003.1576778d
bdba: 0x010002ee
--可以發現佔用5個ITL槽。
4.繼續插入呢?
insert into t (col000,col766) values (7,7);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
insert into t (col000,col766) values (8,8);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
insert into t (col000,col766) values (9,9);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
insert into t (col000,col766) values (10,10);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
insert into t (col000,col766) values (11,11);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
$ sed -n '/Itl/,/bdba:/p' /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_64063.trc
...
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.002.0000d116 0x00c00300.2a09.15 --U- 1 fsc 0x0000.15767794
0x02 0x000a.017.0000d10a 0x00c00300.2a09.1e --U- 4 fsc 0x0000.157677d5
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 C--- 0 scn 0x0003.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 C--- 0 scn 0x0003.15767786
0x05 0x000a.010.0000d10b 0x00c00300.2a09.11 C--- 0 scn 0x0003.1576778d
0x06 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.002.0000d116 0x00c00300.2a09.15 --U- 1 fsc 0x0000.15767794
0x02 0x000a.017.0000d10a 0x00c00300.2a09.1e --U- 4 fsc 0x0000.157677d5
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 C--- 0 scn 0x0003.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 C--- 0 scn 0x0003.15767786
0x05 0x000a.010.0000d10b 0x00c00300.2a09.11 C--- 0 scn 0x0003.1576778d
0x06 0x000a.019.0000d113 0x00c00300.2a09.25 --U- 4 fsc 0x0000.157677dc
0x07 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.002.0000d116 0x00c00300.2a09.15 --U- 1 fsc 0x0000.15767794
0x02 0x000a.017.0000d10a 0x00c00300.2a09.1e --U- 4 fsc 0x0000.157677d5
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 C--- 0 scn 0x0003.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 C--- 0 scn 0x0003.15767786
0x05 0x000a.010.0000d10b 0x00c00300.2a09.11 C--- 0 scn 0x0003.1576778d
0x06 0x000a.019.0000d113 0x00c00300.2a09.25 --U- 4 fsc 0x0000.157677dc
0x07 0x000a.000.0000d114 0x00c00300.2a09.2c --U- 4 fsc 0x0000.157677e3
0x08 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.002.0000d116 0x00c00300.2a09.15 --U- 1 fsc 0x0000.15767794
0x02 0x000a.017.0000d10a 0x00c00300.2a09.1e --U- 4 fsc 0x0000.157677d5
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 C--- 0 scn 0x0003.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 C--- 0 scn 0x0003.15767786
0x05 0x000a.010.0000d10b 0x00c00300.2a09.11 C--- 0 scn 0x0003.1576778d
0x06 0x000a.019.0000d113 0x00c00300.2a09.25 --U- 4 fsc 0x0000.157677dc
0x07 0x000a.000.0000d114 0x00c00300.2a09.2c --U- 4 fsc 0x0000.157677e3
0x08 0x0008.014.00002606 0x00c016b2.0a72.19 --U- 4 fsc 0x0000.157677ea
0x09 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.002.0000d116 0x00c00300.2a09.15 --U- 1 fsc 0x0000.15767794
0x02 0x000a.017.0000d10a 0x00c00300.2a09.1e --U- 4 fsc 0x0000.157677d5
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 C--- 0 scn 0x0003.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 C--- 0 scn 0x0003.15767786
0x05 0x000a.010.0000d10b 0x00c00300.2a09.11 C--- 0 scn 0x0003.1576778d
0x06 0x000a.019.0000d113 0x00c00300.2a09.25 --U- 4 fsc 0x0000.157677dc
0x07 0x000a.000.0000d114 0x00c00300.2a09.2c --U- 4 fsc 0x0000.157677e3
0x08 0x0008.014.00002606 0x00c016b2.0a72.19 --U- 4 fsc 0x0000.157677ea
0x09 0x0006.013.0000121a 0x00c0119c.0901.1b --U- 4 fsc 0x0000.1576786a
0x0a 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
--//從以上測試還可以發現1個規律,就是如果出現行連結至少會增加1個空槽,只要空間允許。
0x0a 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
--但是始終儲存FLAG=C---的最多4個。以上測試不是很嚴謹,至少說明在出現行連結或者行遷移時,ITL槽數量會增加。
--這種情況特性容易出現在插入時行記錄很短,更新以後行記錄很大出現遷移,這樣在遷移的塊就會出現大量的itl槽,因為沒出現1次行連結
--ITL槽的數量就增加1次(特殊情況會增加3個,比如分成4個row piece)。造成空間利用率下降。
--你可以繼續插入:
insert into t (col000,col766) values (12,12);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
$ sed -n '/Itl/,/bdba:/p' /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_64063.trc
...
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.002.0000d116 0x00c00300.2a09.15 --U- 1 fsc 0x0000.15767794
0x02 0x000a.017.0000d10a 0x00c00300.2a09.1e --U- 4 fsc 0x0000.157677d5
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 C--- 0 scn 0x0003.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 C--- 0 scn 0x0003.15767786
0x05 0x000a.010.0000d10b 0x00c00300.2a09.11 C--- 0 scn 0x0003.1576778d
0x06 0x000a.019.0000d113 0x00c00300.2a09.25 --U- 4 fsc 0x0000.157677dc
0x07 0x000a.000.0000d114 0x00c00300.2a09.2c --U- 4 fsc 0x0000.157677e3
0x08 0x0008.014.00002606 0x00c016b2.0a72.19 --U- 4 fsc 0x0000.157677ea
0x09 0x0006.013.0000121a 0x00c0119c.0901.1b --U- 4 fsc 0x0000.1576786a
0x0a 0x000a.01b.0000d124 0x00c00350.2a09.09 --U- 4 fsc 0x0000.15767bf2
0x0b 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
insert into t (col000,col766) values (13,13);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
insert into t (col000,col766) values (14,14);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
$ sed -n '/Itl/,/bdba:/p' /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_64063.trc
...
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.002.0000d116 0x00c00300.2a09.15 C--- 0 scn 0x0003.15767794
0x02 0x000a.017.0000d10a 0x00c00300.2a09.1e C--- 0 scn 0x0003.157677d5
0x03 0x000a.011.0000d113 0x00c00300.2a09.09 C--- 0 scn 0x0003.1576777f
0x04 0x0007.00a.0000189a 0x00c004ff.0622.09 C--- 0 scn 0x0003.15767786
0x05 0x000a.010.0000d10b 0x00c00300.2a09.11 C--- 0 scn 0x0003.1576778d
0x06 0x000a.019.0000d113 0x00c00300.2a09.25 C--- 0 scn 0x0003.157677dc
0x07 0x000a.000.0000d114 0x00c00300.2a09.2c C--- 0 scn 0x0003.157677e3
0x08 0x0008.014.00002606 0x00c016b2.0a72.19 C--- 0 scn 0x0003.157677ea
0x09 0x0006.013.0000121a 0x00c0119c.0901.1b C--- 0 scn 0x0003.1576786a
0x0a 0x000a.01b.0000d124 0x00c00350.2a09.09 C--- 0 scn 0x0003.15767bf2
0x0b 0x000a.018.0000d123 0x00c00350.2a09.10 C--- 0 scn 0x0003.15767c12
0x0c 0x000a.019.0000d11a 0x00c00350.2a09.15 C--- 0 scn 0x0003.15767c15
0x0d 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000
bdba: 0x010002ee
--//塊寫滿的時候提交不再是快速提交,但是你可以發現有增加2個itl槽。
--//實際上這也是我生產系統看到的情況,從這個意義講設計資料結構要考慮避免行遷移或者行連結這種因素。
--//^_^!!這我想起以前聽課老師的一句話,如果你看到應用的pctfree都是10,這樣的系統一定沒有dba管理,
--//國內的IT現狀就是如此,都在做表面文章。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2122700/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20160726]行連結行遷移與ITL槽.txt
- [20160729]行連結行遷移與ITL槽4.txt
- [20160727]行連結行遷移與ITL槽2.txt
- [20180402]行連結行遷移與ITL槽6.txt
- 行遷移和行連結
- 【備份恢復】行遷移與行連結
- 清除行遷移和行連結
- Oracle 行遷移 & 行連結的檢測與消除Oracle
- 行遷移_行連結的介紹
- 如何消除行連結和行遷移
- Oracle資料庫中資料行遷移與行連結Oracle資料庫
- 模擬Oracle行遷移和行連結Oracle
- pctused, pctfree, pctincrease , 行遷移 & 行連結
- 行遷移和行連結的檢測
- 排除表中的行連結和行遷移
- 關於行連結和行遷移和消除
- [20180327]行遷移與ITL浪費.txt
- 行連結與行遷移, LOB欄位的儲存及效能影響
- Row Migration and Row Chaining(行遷移和行連結)AI
- [20121116]通過bbed觀察行連結與行遷移.txt
- 【轉載】行遷移和行連結(row chaining or row migration)AI
- 【效能優化】消除行連結和行遷移的思路和方法優化
- 【概念】行連結和行遷移的概念、模擬及甄別
- 【效能最佳化】消除行連結和行遷移的思路和方法
- [20190120]行連結遷移與dml.txt
- Oracle中行遷移和行連結的清除及檢測Oracle
- 海量資料遷移之分割槽並行抽取並行
- 海量資料遷移之分割槽並行切分並行
- 【轉】【效能最佳化】消除行連結和行遷移的思路和方法
- 行連結(Row chaining)和行遷移(Row Migration)的讀書筆記AI筆記
- 簡單瞭解 oracle update 原理(測試)、 行遷移/行連結基本認識Oracle
- 高水位線、行遷移行連結
- 查詢行遷移及消除行遷移(chained rows)AI
- 關於Oracle資料庫中行遷移/行連結的問題Oracle資料庫
- oracle11g_如何模擬產生行連結或行遷移chained_rowsOracleAI
- oracle ITL槽Oracle
- 行遷移測試
- 海量資料遷移之使用分割槽並行切分匯入並行