Уровни изоляции в Юконе

User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

Alex Shtern wrote:ITLs do not contain information about all the rows but each row header for locked row contains byte - this byte is a number of Interester Transaction Slot in the ITL.

Alex - Вы придираетесь не по делу. VC имел в виду другое: как только ITL слот переиспользуется новой транзакцией, во всех строках блока, указывающих на этот слот, байт-индекс ITL слота последней блокировавшей эти строки транзакции безжалостно обнуляется и информация о том, кто трогал эти строки (и трогал ли вообще) безвозвратно теряется. Поэтому в таких случаях Oracle вынужден делать реконструкцию блока даже если нужная версия строки реально находится в текущем блоке.
Cheers
vc
Уже с Приветом
Posts: 664
Joined: 05 Jun 2002 01:11

Post by vc »

Alex Shtern wrote:VC,

ITLs do not contain information about all the rows but each row header for
locked row contains byte - this byte is a number of Interester Transaction Slot
in the ITL . :lol:

И если бы ты прочитал прошлое сообшение, то увидел бы
что именно ето там и написано :umnik1:


A little knowledge is a dangerous thing...

Code: Select all

create table t1 (x varchar2(10)); -- table with two ITL slots (the default)


-- Row one
insert into t1 values('ROW ONE');
commit;

-- Block dump:

scn: 0x0000.207b8fd2 seq: 0x01 flg: 0x02 tail: 0x8fd20601
 
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0001.018.0001d45f  0x0080000a.0ce5.0e  --U-    1  fsc 0x0000.207b8fd2
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000

block_row_dump:
tab 0, row 0, @0x1f8d
tl: 11 fb: --H-FL-- lb: 0x1  cc: 1
col  0: [ 7]  52 4f 57 20 4f 4e 45

-- the transaction took slot 1 and the row lock byte points at slot 1: lb = 0x1
--

-- Insert row  two
insert into t1 values('ROW TWO');
commit;

scn: 0x0000.207b9076 seq: 0x01 flg: 0x02 tail: 0x90760601
 
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0001.018.0001d45f  0x0080000a.0ce5.0e  --U-    1  fsc 0x0000.207b8fd2
0x02   0x000a.022.00018db4  0x0080009e.0b4a.13  --U-    1  fsc 0x0000.207b9076
 
block_row_dump:
tab 0, row 0, @0x1f8d
tl: 11 fb: --H-FL-- lb: 0x1  cc: 1
col  0: [ 7]  52 4f 57 20 4f 4e 45
tab 0, row 1, @0x1f82
tl: 11 fb: --H-FL-- lb: 0x2  cc: 1
col  0: [ 7]  52 4f 57 20 54 57 4f


-- the new transaction took slot 2 and the row lock byte points at slot 2: lb = 0x2
--

-- Insert row three
insert into t1 values('ROW THREE');
commit;

scn: 0x0000.207b90cf seq: 0x01 flg: 0x02 tail: 0x90cf0601

 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0004.00c.0001baf5  0x00800235.0a54.4c  --U-    1  fsc 0x0000.207b90cf
0x02   0x000a.022.00018db4  0x0080009e.0b4a.13  C---    0  scn 0x0000.207b9076
 
block_row_dump:
tab 0, row 0, @0x1f8d
tl: 11 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 7]  52 4f 57 20 4f 4e 45
tab 0, row 1, @0x1f82
tl: 11 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [ 7]  52 4f 57 20 54 57 4f
tab 0, row 2, @0x1f75
tl: 13 fb: --H-FL-- lb: 0x1  cc: 1
col  0: [ 9]  52 4f 57 20 54 48 52 45 45

-- the new transaction over-wrote slot 1 and the row 3 lock byte points at slot 1: lb = 0x1
-- the lock bytes for rows 1 and 2 were zeroed.

Return to “Вопросы и новости IT”