<?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: Index too big</title>
	<atom:link href="http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/</link>
	<description>Just another Oracle weblog</description>
	<lastBuildDate>Sat, 18 May 2013 11:04:10 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-41171</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Wed, 03 Aug 2011 09:17:56 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-41171</guid>
		<description><![CDATA[Yuri,

I think the first thing to say is that you&#039;ve found an error in the book, the &lt;em&gt;lf_rows&lt;/em&gt; figures &lt;strong&gt;include&lt;/strong&gt; the &lt;em&gt;del_lf_rows&lt;/em&gt; figures. The book was based on 8.1.5, but I don&#039;t think that the calls to &lt;em&gt;index_stats &lt;/em&gt;would have changed from 8.1.5 to 8.1.7.4 which is the earliest version I can get my hands on.  (I&#039;ve added an item to my &lt;a href=&quot;http://www.jlcomp.demon.co.uk/ind_book.html&quot; rel=&quot;nofollow&quot;&gt;&lt;em&gt;&lt;strong&gt;list of errata&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;.)

Your stats mean:  there are 1,000 entries visible in the row-directories of the leaf blocks (&lt;em&gt;lf_rows&lt;/em&gt;=1,000), but every entry has its Deleted flag set (&lt;em&gt;del_lf_rows &lt;/em&gt;= 1,000).]]></description>
		<content:encoded><![CDATA[<p>Yuri,</p>
<p>I think the first thing to say is that you&#8217;ve found an error in the book, the <em>lf_rows</em> figures <strong>include</strong> the <em>del_lf_rows</em> figures. The book was based on 8.1.5, but I don&#8217;t think that the calls to <em>index_stats </em>would have changed from 8.1.5 to 8.1.7.4 which is the earliest version I can get my hands on.  (I&#8217;ve added an item to my <a href="http://www.jlcomp.demon.co.uk/ind_book.html" rel="nofollow"><em><strong>list of errata</strong></em></a>.)</p>
<p>Your stats mean:  there are 1,000 entries visible in the row-directories of the leaf blocks (<em>lf_rows</em>=1,000), but every entry has its Deleted flag set (<em>del_lf_rows </em>= 1,000).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yuri</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-41170</link>
		<dc:creator><![CDATA[Yuri]]></dc:creator>
		<pubDate>Wed, 03 Aug 2011 07:15:53 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-41170</guid>
		<description><![CDATA[I`ve done the following:

analyze index i1 validate structure;

And receved those numbers

LF_ROWS,DEL_LF_ROWS from index_stats;

   LF_ROWS DEL_LF_ROWS
---------- -----------
      1000        1000

Could you please explain, what they mean. Especially remembering your description for LF_ROWS in book Practical Oracle8i: &quot;Number of current rows in the index (excluding deleted rows)&quot;

Oracle 11.2.0.2]]></description>
		<content:encoded><![CDATA[<p>I`ve done the following:</p>
<p>analyze index i1 validate structure;</p>
<p>And receved those numbers</p>
<p>LF_ROWS,DEL_LF_ROWS from index_stats;</p>
<p>   LF_ROWS DEL_LF_ROWS<br />
&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8211;<br />
      1000        1000</p>
<p>Could you please explain, what they mean. Especially remembering your description for LF_ROWS in book Practical Oracle8i: &#8220;Number of current rows in the index (excluding deleted rows)&#8221;</p>
<p>Oracle 11.2.0.2</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fragmentation 4 &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-36808</link>
		<dc:creator><![CDATA[Fragmentation 4 &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Thu, 22 Jul 2010 19:01:58 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-36808</guid>
		<description><![CDATA[[...] &#8211; it cannot immediately reuse the space, it has to wait until after the commit. (I posted an example demonstrating this difference a few months ago.) Another critical difference between tables and indexes is that an index [...]]]></description>
		<content:encoded><![CDATA[<p>[...] &#8211; it cannot immediately reuse the space, it has to wait until after the commit. (I posted an example demonstrating this difference a few months ago.) Another critical difference between tables and indexes is that an index [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: heap block compress &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-36608</link>
		<dc:creator><![CDATA[heap block compress &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Tue, 29 Jun 2010 09:50:27 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-36608</guid>
		<description><![CDATA[[...] files &#8212; Jonathan Lewis @ 7:24 pm UTC Mar 30,2010   In a recent note showing how an index could become much larger than the underlying table because of the different ways that Oracle handles deletion from table and index blocks, I pointed [...]]]></description>
		<content:encoded><![CDATA[<p>[...] files &#8212; Jonathan Lewis @ 7:24 pm UTC Mar 30,2010   In a recent note showing how an index could become much larger than the underlying table because of the different ways that Oracle handles deletion from table and index blocks, I pointed [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: 19/03 /2010 &#8211; 26/03/2010 &#171; Coskan&#8217;s Approach to Oracle</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-36137</link>
		<dc:creator><![CDATA[19/03 /2010 &#8211; 26/03/2010 &#171; Coskan&#8217;s Approach to Oracle]]></dc:creator>
		<pubDate>Mon, 03 May 2010 02:40:02 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-36137</guid>
		<description><![CDATA[[...] 10-Difference between deletion from index and table Jonathan Lewis-Index too big [...]]]></description>
		<content:encoded><![CDATA[<p>[...] 10-Difference between deletion from index and table Jonathan Lewis-Index too big [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-35952</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Wed, 31 Mar 2010 22:14:04 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-35952</guid>
		<description><![CDATA[Hans-Peter,

Richard&#039;s question was &quot;what if the commit was inside the loop&quot;.  In this case each time you insert the next entry, the previous entry will be wiped out of the index and the space will re-used. If you dump the table block, though, you will see that Oracle stacks the incoming rows into the block&#039;s free space, even though it will keep recycling the block&#039;s row directory so that it never grows and only the last inserted/deleted row is identified and the &quot;heap block compress&quot; (see pingback) happens in the same way.

Flado&#039;s question was &quot;what if you do a rollback outside the loop&quot;. In this case the rollback would actually happen, and the table&#039;s row directory would be reduced to a minimum and the row directories of the index leaf blocks would be emptied, but the leaf blocks would still be in the index structure and the root block would still have entries pointing to the leaf blocks.]]></description>
		<content:encoded><![CDATA[<p>Hans-Peter,</p>
<p>Richard&#8217;s question was &#8220;what if the commit was inside the loop&#8221;.  In this case each time you insert the next entry, the previous entry will be wiped out of the index and the space will re-used. If you dump the table block, though, you will see that Oracle stacks the incoming rows into the block&#8217;s free space, even though it will keep recycling the block&#8217;s row directory so that it never grows and only the last inserted/deleted row is identified and the &#8220;heap block compress&#8221; (see pingback) happens in the same way.</p>
<p>Flado&#8217;s question was &#8220;what if you do a rollback outside the loop&#8221;. In this case the rollback would actually happen, and the table&#8217;s row directory would be reduced to a minimum and the row directories of the index leaf blocks would be emptied, but the leaf blocks would still be in the index structure and the root block would still have entries pointing to the leaf blocks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hans-Peter</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-35938</link>
		<dc:creator><![CDATA[Hans-Peter]]></dc:creator>
		<pubDate>Tue, 30 Mar 2010 17:10:17 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-35938</guid>
		<description><![CDATA[Hi Jonathan,

I am still curious about the answers to Richard Foote&#039;s question and Flado&#039;s.
- commit outside the loop
- rollback instead of commit

Regards Hans-Peter]]></description>
		<content:encoded><![CDATA[<p>Hi Jonathan,</p>
<p>I am still curious about the answers to Richard Foote&#8217;s question and Flado&#8217;s.<br />
- commit outside the loop<br />
- rollback instead of commit</p>
<p>Regards Hans-Peter</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kent</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-35936</link>
		<dc:creator><![CDATA[kent]]></dc:creator>
		<pubDate>Tue, 30 Mar 2010 11:53:51 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-35936</guid>
		<description><![CDATA[oh dear - so much more reading for me to do ;o(]]></description>
		<content:encoded><![CDATA[<p>oh dear &#8211; so much more reading for me to do ;o(</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-35907</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Fri, 26 Mar 2010 22:03:24 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-35907</guid>
		<description><![CDATA[Tony,

Good to think about the number of branch blocks and the dependency on the size of the entry that has to be in the branch block. In my example the way I defined the index entry requires very large entries in the branch blocks too - Oracle tries to trim branch block entries to the smallest size that will allow it to distinguish the first entry in one leaf block from the largest possible entry in the previous leaf block, but my entries match over almost their entire length.]]></description>
		<content:encoded><![CDATA[<p>Tony,</p>
<p>Good to think about the number of branch blocks and the dependency on the size of the entry that has to be in the branch block. In my example the way I defined the index entry requires very large entries in the branch blocks too &#8211; Oracle tries to trim branch block entries to the smallest size that will allow it to distinguish the first entry in one leaf block from the largest possible entry in the previous leaf block, but my entries match over almost their entire length.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2010/03/25/index-too-big/#comment-35906</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Fri, 26 Mar 2010 22:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=3420#comment-35906</guid>
		<description><![CDATA[Charles,

You&#039;ve raised a couple of interesting points beyond the answers given by Martin and Narenda.

Definitely worth mentioning that their arithmetic was valid because of the so-called &quot;90/10&quot; splits cause by the monotonic increasing values.  I don&#039;t think 32/64 bit would make a difference, nor the version (so long as it was 6 or above)

The comment about &lt;em&gt;&lt;strong&gt;_bump_highwater_mark_count&lt;/strong&gt;&lt;/em&gt; is worth a mention. People do fiddle with it occasionally, of course, but the reason for mentioning it is that there could be some blocks that are on the index free list because the HWM has been recently bumped (by its default of 5) which aren&#039;t in the index yet.

In fact, the table is a special case for the HWM - when you start inserting data into a segment it allocates blocks one at a time for the first few before the 5 block &quot;bump&quot; takes over; so in this case there were no extra empty blocks on the free list.  (I think this behaviour is just a hangover from the old days when keeping space to a minimum was more important that pausing briefly to allocate a new block).]]></description>
		<content:encoded><![CDATA[<p>Charles,</p>
<p>You&#8217;ve raised a couple of interesting points beyond the answers given by Martin and Narenda.</p>
<p>Definitely worth mentioning that their arithmetic was valid because of the so-called &#8220;90/10&#8243; splits cause by the monotonic increasing values.  I don&#8217;t think 32/64 bit would make a difference, nor the version (so long as it was 6 or above)</p>
<p>The comment about <em><strong>_bump_highwater_mark_count</strong></em> is worth a mention. People do fiddle with it occasionally, of course, but the reason for mentioning it is that there could be some blocks that are on the index free list because the HWM has been recently bumped (by its default of 5) which aren&#8217;t in the index yet.</p>
<p>In fact, the table is a special case for the HWM &#8211; when you start inserting data into a segment it allocates blocks one at a time for the first few before the 5 block &#8220;bump&#8221; takes over; so in this case there were no extra empty blocks on the free list.  (I think this behaviour is just a hangover from the old days when keeping space to a minimum was more important that pausing briefly to allocate a new block).</p>
]]></content:encoded>
	</item>
</channel>
</rss>
