<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: IQ2 &#8211; Answers</title>
	<atom:link href="http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/</link>
	<description>Just another Oracle weblog</description>
	<lastBuildDate>Thu, 23 May 2013 12:47:17 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Index ITLs &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/#comment-34454</link>
		<dc:creator><![CDATA[Index ITLs &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Sat, 19 Sep 2009 15:36:39 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1829#comment-34454</guid>
		<description><![CDATA[[...] Index Quiz 2 :  Answering the question with block dumps [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Index Quiz 2 :  Answering the question with block dumps [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/#comment-33999</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Tue, 28 Jul 2009 19:47:51 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1829#comment-33999</guid>
		<description><![CDATA[lascoltodelvenerdi,

I don&#039;t really see this enhancement coming along in the near future - the strategy of copying the ITL has been around since version 6.

Funny you should mention index rebuilding though ...]]></description>
		<content:encoded><![CDATA[<p>lascoltodelvenerdi,</p>
<p>I don&#8217;t really see this enhancement coming along in the near future &#8211; the strategy of copying the ITL has been around since version 6.</p>
<p>Funny you should mention index rebuilding though &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lascoltodelvenerdi</title>
		<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/#comment-33991</link>
		<dc:creator><![CDATA[lascoltodelvenerdi]]></dc:creator>
		<pubDate>Tue, 28 Jul 2009 06:05:47 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1829#comment-33991</guid>
		<description><![CDATA[on b.

You are right (as always! lol!) the reasons can be: HD-space cost is very low (so, some wastage is &quot;not a great problem&quot;) or when split occurs you already got the itc so just copy it (lazy programming technique).
Possible future enhancements? Maybe...

As a conclusion:
When you need to rebuild your index?
When you got a lot of excess space in the ITL! ;-)
(just kidding a little bit)]]></description>
		<content:encoded><![CDATA[<p>on b.</p>
<p>You are right (as always! lol!) the reasons can be: HD-space cost is very low (so, some wastage is &#8220;not a great problem&#8221;) or when split occurs you already got the itc so just copy it (lazy programming technique).<br />
Possible future enhancements? Maybe&#8230;</p>
<p>As a conclusion:<br />
When you need to rebuild your index?<br />
When you got a lot of excess space in the ITL! ;-)<br />
(just kidding a little bit)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/#comment-33986</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Mon, 27 Jul 2009 20:15:47 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1829#comment-33986</guid>
		<description><![CDATA[lascoltodelvenerdi,

Just playing devil&#039;s advocate and talking around the possibilities:

a) looking up &lt;em&gt;&lt;strong&gt;initrans&lt;/strong&gt;&lt;/em&gt; need not be expensive - especially compared to clearing a buffer for the split and writing all that &lt;em&gt;&lt;strong&gt;undo&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;redo&lt;/strong&gt;&lt;/em&gt;; if it gets expensive you could alway ensure that &lt;em&gt;&lt;strong&gt;initrans &lt;/strong&gt;&lt;/em&gt;is copied into the root block, and you will probably have pinned the root block already.

b) the drawback to cloning the &lt;em&gt;&lt;strong&gt;ITL &lt;/strong&gt;&lt;/em&gt;is that a single burst of concurrency once in the life time of the index could leave a lot of excess space in the &lt;em&gt;&lt;strong&gt;ITL &lt;/strong&gt;&lt;/em&gt;for all new blocks from there onwards. I can&#039;t see any obvious reason why the copy process doesn&#039;t avoid copying &lt;em&gt;&lt;strong&gt;ITL &lt;/strong&gt;&lt;/em&gt;entries which have not been used when a split occurs, as this might help to minimise the future wastage.]]></description>
		<content:encoded><![CDATA[<p>lascoltodelvenerdi,</p>
<p>Just playing devil&#8217;s advocate and talking around the possibilities:</p>
<p>a) looking up <em><strong>initrans</strong></em> need not be expensive &#8211; especially compared to clearing a buffer for the split and writing all that <em><strong>undo</strong></em> and <em><strong>redo</strong></em>; if it gets expensive you could alway ensure that <em><strong>initrans </strong></em>is copied into the root block, and you will probably have pinned the root block already.</p>
<p>b) the drawback to cloning the <em><strong>ITL </strong></em>is that a single burst of concurrency once in the life time of the index could leave a lot of excess space in the <em><strong>ITL </strong></em>for all new blocks from there onwards. I can&#8217;t see any obvious reason why the copy process doesn&#8217;t avoid copying <em><strong>ITL </strong></em>entries which have not been used when a split occurs, as this might help to minimise the future wastage.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lascoltodelvenerdi</title>
		<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/#comment-33972</link>
		<dc:creator><![CDATA[lascoltodelvenerdi]]></dc:creator>
		<pubDate>Mon, 27 Jul 2009 07:04:16 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1829#comment-33972</guid>
		<description><![CDATA[Nice.

When &quot;playing&quot; the &quot;Index Quiz 2&quot; I was thinking on this (ehm...wrong) model:

- every index block start with 4 itc (because I say I want 4 ITC)
- on block split every block is &quot;initialized&quot; with 4 itc
- the itc can grow to MAXTRANS

Quite linear, but quite expensive also because every time a new block is added you have to read the initial INITRANS value.

The implementation explained by Jonathan is very time effective: it minimize time creation of the block (you have to &quot;copy&quot; the data from the block you are splitting, so no additional look up is required), it also try to optimize concurrency (block are created with a &quot;high&quot; itc so the index is ready for future high transaction burst)]]></description>
		<content:encoded><![CDATA[<p>Nice.</p>
<p>When &#8220;playing&#8221; the &#8220;Index Quiz 2&#8243; I was thinking on this (ehm&#8230;wrong) model:</p>
<p>- every index block start with 4 itc (because I say I want 4 ITC)<br />
- on block split every block is &#8220;initialized&#8221; with 4 itc<br />
- the itc can grow to MAXTRANS</p>
<p>Quite linear, but quite expensive also because every time a new block is added you have to read the initial INITRANS value.</p>
<p>The implementation explained by Jonathan is very time effective: it minimize time creation of the block (you have to &#8220;copy&#8221; the data from the block you are splitting, so no additional look up is required), it also try to optimize concurrency (block are created with a &#8220;high&#8221; itc so the index is ready for future high transaction burst)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: coskan</title>
		<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/#comment-33957</link>
		<dc:creator><![CDATA[coskan]]></dc:creator>
		<pubDate>Fri, 24 Jul 2009 23:11:29 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1829#comment-33957</guid>
		<description><![CDATA[Thank you for explaining the 11th ITL entry it was making me crazy :)]]></description>
		<content:encoded><![CDATA[<p>Thank you for explaining the 11th ITL entry it was making me crazy :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/#comment-33956</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Fri, 24 Jul 2009 22:37:22 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1829#comment-33956</guid>
		<description><![CDATA[Daniel,

You&#039;re right, it should be four; thanks for pointing out the error. Now corrected.

Yes, every leaf that splits off from either of those two will inherit 11 ITL entries.

If you do a block dump, the phrase &lt;i&gt;&quot;Leaf block dump&quot;&lt;/i&gt; or &lt;i&gt;&quot;Branch block dump&quot;&lt;/i&gt; will appear in the header section. However, you cannot, in general, identify a block as &lt;em&gt;&quot;the root block&quot;&lt;/em&gt; of an index by looking at the dump - you have to know that it is the first block after the segment header. 

If you happen to know the &lt;em&gt;&lt;strong&gt;blevel &lt;/strong&gt;&lt;/em&gt;or &lt;em&gt;&lt;strong&gt;height &lt;/strong&gt;&lt;/em&gt;(= blevel + 1) of the index, then you can search for the entry &lt;em&gt;&lt;strong&gt;kdxcolev&lt;/strong&gt;&lt;/em&gt; in the dump as this records the level of the block in the index - and if &lt;em&gt;&lt;strong&gt;kdxcolev &lt;/strong&gt;&lt;/em&gt;= &lt;em&gt;&lt;strong&gt;blevel &lt;/strong&gt;&lt;/em&gt;then you are looking at the root block.]]></description>
		<content:encoded><![CDATA[<p>Daniel,</p>
<p>You&#8217;re right, it should be four; thanks for pointing out the error. Now corrected.</p>
<p>Yes, every leaf that splits off from either of those two will inherit 11 ITL entries.</p>
<p>If you do a block dump, the phrase <i>&#8220;Leaf block dump&#8221;</i> or <i>&#8220;Branch block dump&#8221;</i> will appear in the header section. However, you cannot, in general, identify a block as <em>&#8220;the root block&#8221;</em> of an index by looking at the dump &#8211; you have to know that it is the first block after the segment header. </p>
<p>If you happen to know the <em><strong>blevel </strong></em>or <em><strong>height </strong></em>(= blevel + 1) of the index, then you can search for the entry <em><strong>kdxcolev</strong></em> in the dump as this records the level of the block in the index &#8211; and if <em><strong>kdxcolev </strong></em>= <em><strong>blevel </strong></em>then you are looking at the root block.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Stolf</title>
		<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/#comment-33954</link>
		<dc:creator><![CDATA[Daniel Stolf]]></dc:creator>
		<pubDate>Fri, 24 Jul 2009 22:13:02 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1829#comment-33954</guid>
		<description><![CDATA[&quot;Both leaf blocks have 11 slots in their ITLs, not the eight that we might expect&quot;

Shouldn&#039;t it be 4?

Just so I can get this straight: if a single session inserts 300 rows (or something enough to cause another split) after the other 10 concurrent sessions have commited, then all the &quot;child&quot; blocks will inherit 11 ITL entries, including the service ITL?

Another question: how do you know if a block is the root, branch or leaf block?]]></description>
		<content:encoded><![CDATA[<p>&#8220;Both leaf blocks have 11 slots in their ITLs, not the eight that we might expect&#8221;</p>
<p>Shouldn&#8217;t it be 4?</p>
<p>Just so I can get this straight: if a single session inserts 300 rows (or something enough to cause another split) after the other 10 concurrent sessions have commited, then all the &#8220;child&#8221; blocks will inherit 11 ITL entries, including the service ITL?</p>
<p>Another question: how do you know if a block is the root, branch or leaf block?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Index Quiz 2 &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/07/24/iq2-answers/#comment-33952</link>
		<dc:creator><![CDATA[Index Quiz 2 &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Fri, 24 Jul 2009 21:06:58 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1829#comment-33952</guid>
		<description><![CDATA[[...] IQ2 &#8211;&#160;Answers  [...]]]></description>
		<content:encoded><![CDATA[<p>[...] IQ2 &#8211;&nbsp;Answers  [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
