Re: ITL mechanism

From: Randolf Geist <mahrah_at_web.de>
Date: Fri, 12 Aug 2011 04:21:08 -0700 (PDT)
Message-ID: <4bbe25de-2063-43d7-9c7e-8a64282a1c75_at_h7g2000yqm.googlegroups.com>



On Aug 12, 5:19 am, vsevolod afanassiev
<vsevolod.afanass..._at_gmail.com> wrote:
> Thanks. Let's say there are 100 rows in a block and 50 got updated by
> one transaction. Then single ITL entry
> should contain information about 50 rows. How do you fit information
> about 50 rows in 24 bytes?
>
> http://avdeo.com/2008/06/16/interested-transaction-list-itl/
> Quote:
> This variable portion of the data block contains slots for
> transactions to put the locking information. When a row in the block
> is locked for the first time, the transaction places a lock in one of
> the slots with the rowid of the row that is locked. In other words,
> the transaction makes it known that it is interested in the row (hence
> the name “Interested Transaction List”). When the same transaction or
> another one locks another row, the information is stored in another
> slot, and so on.

The quoted part is wrong, the row entry contains a lock byte that points to the ITL slot, there is no ROWID stored in the ITL slot. There is only a single ITL slot allocated for a single transaction within a single block no matter how many rows of that block are modified by that transaction. The lock byte of each row entry links the row to the transaction.

You might want to read Arup's article on that topic where he specifically covers that point: http://arup.blogspot.com/2011/01/more-on-interested-transaction-lists.html

and this one may be also: http://arup.blogspot.com/2010/12/100-things-you-probably-didnt-know.html

Hope this helps,
Randolf Received on Fri Aug 12 2011 - 06:21:08 CDT

Original text of this message