<?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: Row Directory</title>
	<atom:link href="http://jonathanlewis.wordpress.com/2009/05/21/row-directory/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/</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: Rowid &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-36188</link>
		<dc:creator><![CDATA[Rowid &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Sun, 09 May 2010 19:48:15 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-36188</guid>
		<description><![CDATA[[...] is to tell me which entry in the block&#8217;s &#8220;row directory&#8221; I occupy, and since the row directory can hold 4,096 entries that takes two bytes. So &#8211; from my perspective &#8211; the cost of my [...]]]></description>
		<content:encoded><![CDATA[<p>[...] is to tell me which entry in the block&#8217;s &#8220;row directory&#8221; I occupy, and since the row directory can hold 4,096 entries that takes two bytes. So &#8211; from my perspective &#8211; the cost of my [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Row count 2 &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-36162</link>
		<dc:creator><![CDATA[Row count 2 &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Wed, 05 May 2010 19:43:54 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-36162</guid>
		<description><![CDATA[[...] first extract is from the block dump of the first block after the update and shows the row directory and the start of each row in the &#8220;row heap&#8221; (that&#8217;s a term I&#8217;ve just [...]]]></description>
		<content:encoded><![CDATA[<p>[...] first extract is from the block dump of the first block after the update and shows the row directory and the start of each row in the &#8220;row heap&#8221; (that&#8217;s a term I&#8217;ve just [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Row count &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-36062</link>
		<dc:creator><![CDATA[Row count &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Sat, 17 Apr 2010 11:13:21 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-36062</guid>
		<description><![CDATA[[...] other &#8220;magic number&#8221; of 4,096 is there because that&#8217;s the maximum number of row directory entries you can have in a single [...]]]></description>
		<content:encoded><![CDATA[<p>[...] other &#8220;magic number&#8221; of 4,096 is there because that&#8217;s the maximum number of row directory entries you can have in a single [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: heap block compress &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-35939</link>
		<dc:creator><![CDATA[heap block compress &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Tue, 30 Mar 2010 19:25:45 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-35939</guid>
		<description><![CDATA[[...] in case a process rolled back the delete. (This tied back to a note I had written showing that the row directory in a table block could become much larger than you might think [...]]]></description>
		<content:encoded><![CDATA[<p>[...] in case a process rolled back the delete. (This tied back to a note I had written showing that the row directory in a table block could become much larger than you might think [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Index too big &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-35910</link>
		<dc:creator><![CDATA[Index too big &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Fri, 26 Mar 2010 22:42:09 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-35910</guid>
		<description><![CDATA[[...] until after the commit; however tables and indexes are handled differently. Tables only need to keep a &#8220;stub&#8221; to represent the row that has been marked for deletion, but indexes have to keep the entire index [...]]]></description>
		<content:encoded><![CDATA[<p>[...] until after the commit; however tables and indexes are handled differently. Tables only need to keep a &#8220;stub&#8221; to represent the row that has been marked for deletion, but indexes have to keep the entire index [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pseudo-parallel &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-35153</link>
		<dc:creator><![CDATA[Pseudo-parallel &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Sun, 03 Jan 2010 11:52:13 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-35153</guid>
		<description><![CDATA[[...] 4095 as the &#8220;highest row in block&#8221; value to calculate the high rowid. (There&#8217;s an interesting consequence of this hard limit that could cause surprises in data warehouses and other system (e.g. Peoplesoft) [...]]]></description>
		<content:encoded><![CDATA[<p>[...] 4095 as the &#8220;highest row in block&#8221; value to calculate the high rowid. (There&#8217;s an interesting consequence of this hard limit that could cause surprises in data warehouses and other system (e.g. Peoplesoft) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lunchtime Quiz &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-34519</link>
		<dc:creator><![CDATA[Lunchtime Quiz &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Sat, 26 Sep 2009 03:26:27 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-34519</guid>
		<description><![CDATA[[...] The answer is here, but do read the comments on this post before you look at it.    Comments [...]]]></description>
		<content:encoded><![CDATA[<p>[...] The answer is here, but do read the comments on this post before you look at it.    Comments [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Glossary &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-34406</link>
		<dc:creator><![CDATA[Glossary &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Sat, 12 Sep 2009 19:10:01 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-34406</guid>
		<description><![CDATA[[...] Some symbolic block dumps (table and undo particularly) will list the row directory, others (e.g. index) will not. There are variations on a theme &#8211; blocks from heap tables and clusters also contain a &#8220;table directory&#8221;, but this will contain only one entry in the case of a simple heap table; blocks from a compressed index include a &#8220;prefix directory&#8221;; blocks from a compressed table include a &#8220;token directory&#8221;. In all cases the concept is the same: a list of two-byte entries pointing to a piece of useful data. (See also: this blog entry) [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Some symbolic block dumps (table and undo particularly) will list the row directory, others (e.g. index) will not. There are variations on a theme &#8211; blocks from heap tables and clusters also contain a &#8220;table directory&#8221;, but this will contain only one entry in the case of a simple heap table; blocks from a compressed index include a &#8220;prefix directory&#8221;; blocks from a compressed table include a &#8220;token directory&#8221;. In all cases the concept is the same: a list of two-byte entries pointing to a piece of useful data. (See also: this blog entry) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-33886</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Mon, 20 Jul 2009 12:46:28 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-33886</guid>
		<description><![CDATA[You need to do some simple testing.  Create a table with a single column of varchar2(12), say, insert 1,000 rows with the same value and dump a block; then compress the table, dump a block, and compare the two dumps.

Here&#039;s an extract from a dump of such a compressed table:

&lt;code&gt;
tab 1, row 702, @0x11be
tl: 5 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [12]  78 78 78 78 78 78 78 78 78 78 78 78
bindmp: 2c 00 01 01 00
tab 1, row 703, @0x11b9
tl: 5 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [12]  78 78 78 78 78 78 78 78 78 78 78 78
bindmp: 2c 00 01 01 00
tab 1, row 704, @0x11b4
tl: 5 fb: --H-FL-- lb: 0x0  cc: 1
col  0: [12]  78 78 78 78 78 78 78 78 78 78 78 78
bindmp: 2c 00 01 01 00
&lt;/code&gt;

Note that the row lengths are 5 bytes (tl: 5), or substract two adjacent addresses.Since there are three bytes of row overhead (flags, lock byte, column count) that means only two bytes have been used for the column value - so possibly one byte to flag that the next byte is a token, and one byte for the &quot;token pointer&quot;.

You stil have to do a few more tests, of course but at first sight it looks like a repetitive four-byte string can give you some space benefit on compression.

Further tests: if a &quot;token pointer&quot; is one byte does that mean a block can hold only 255 different token values ? Maybe that one byte can turn to two bytes.

What happens if two adjacent columns have very repetitive combinations - you get one token to represent two columns, does that change anything else.
]]></description>
		<content:encoded><![CDATA[<p>You need to do some simple testing.  Create a table with a single column of varchar2(12), say, insert 1,000 rows with the same value and dump a block; then compress the table, dump a block, and compare the two dumps.</p>
<p>Here&#8217;s an extract from a dump of such a compressed table:</p>
<p><code><br />
tab 1, row 702, @0x11be<br />
tl: 5 fb: --H-FL-- lb: 0x0  cc: 1<br />
col  0: [12]  78 78 78 78 78 78 78 78 78 78 78 78<br />
bindmp: 2c 00 01 01 00<br />
tab 1, row 703, @0x11b9<br />
tl: 5 fb: --H-FL-- lb: 0x0  cc: 1<br />
col  0: [12]  78 78 78 78 78 78 78 78 78 78 78 78<br />
bindmp: 2c 00 01 01 00<br />
tab 1, row 704, @0x11b4<br />
tl: 5 fb: --H-FL-- lb: 0x0  cc: 1<br />
col  0: [12]  78 78 78 78 78 78 78 78 78 78 78 78<br />
bindmp: 2c 00 01 01 00<br />
</code></p>
<p>Note that the row lengths are 5 bytes (tl: 5), or substract two adjacent addresses.Since there are three bytes of row overhead (flags, lock byte, column count) that means only two bytes have been used for the column value &#8211; so possibly one byte to flag that the next byte is a token, and one byte for the &#8220;token pointer&#8221;.</p>
<p>You stil have to do a few more tests, of course but at first sight it looks like a repetitive four-byte string can give you some space benefit on compression.</p>
<p>Further tests: if a &#8220;token pointer&#8221; is one byte does that mean a block can hold only 255 different token values ? Maybe that one byte can turn to two bytes.</p>
<p>What happens if two adjacent columns have very repetitive combinations &#8211; you get one token to represent two columns, does that change anything else.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pramode</title>
		<link>http://jonathanlewis.wordpress.com/2009/05/21/row-directory/#comment-33879</link>
		<dc:creator><![CDATA[Pramode]]></dc:creator>
		<pubDate>Fri, 17 Jul 2009 19:37:46 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=1275#comment-33879</guid>
		<description><![CDATA[Does any one know in Oracle 10g when table is compressed and in a block there are duplicate values for one column what is the size of the reference pointer size?
Ex: if i have column value &quot;test&quot; (4 bytes ) repeated for the whole block. what is the size if the pointer?

My concern is if the pointer size is 4bytes or 8 bytes then compression may not be helping me..

Thanks
Pramode]]></description>
		<content:encoded><![CDATA[<p>Does any one know in Oracle 10g when table is compressed and in a block there are duplicate values for one column what is the size of the reference pointer size?<br />
Ex: if i have column value &#8220;test&#8221; (4 bytes ) repeated for the whole block. what is the size if the pointer?</p>
<p>My concern is if the pointer size is 4bytes or 8 bytes then compression may not be helping me..</p>
<p>Thanks<br />
Pramode</p>
]]></content:encoded>
	</item>
</channel>
</rss>
