<?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: PX Buffer</title>
	<atom:link href="http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/</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: More complexity of parallel executions &#124; ukerno</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-55057</link>
		<dc:creator><![CDATA[More complexity of parallel executions &#124; ukerno]]></dc:creator>
		<pubDate>Sat, 27 Apr 2013 19:20:14 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-55057</guid>
		<description><![CDATA[[...] http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/ [...]]]></description>
		<content:encoded><![CDATA[<p>[...] <a href="http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/" rel="nofollow">http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Catch-up &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-51999</link>
		<dc:creator><![CDATA[Catch-up &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Tue, 11 Dec 2012 17:12:39 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-51999</guid>
		<description><![CDATA[[...] for Statistics in 11g, ending with Randolf Geist on Parallel Execution (including a reference to one of my older blog items which I now think could well be wrong &#8211; so I may have to spend Thursday reviewing it and [...]]]></description>
		<content:encoded><![CDATA[<p>[...] for Statistics in 11g, ending with Randolf Geist on Parallel Execution (including a reference to one of my older blog items which I now think could well be wrong &#8211; so I may have to spend Thursday reviewing it and [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-48751</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Tue, 07 Aug 2012 18:04:48 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-48751</guid>
		<description><![CDATA[Amardeep,

Thank you for your comment - it has drawn my attention to the fact that 11g (possible 11.2) has added a new feature to the pq_distribute hint that was in (or, at least) was not documented for 10g. The &quot;single distribution&quot; option for dealing with data loading.

The posting is simply an example of the type of investigation and level of knowledge required to make a decision of the type indicated by the manuals, so the quick answer to your last question is: &quot;yes&quot;.]]></description>
		<content:encoded><![CDATA[<p>Amardeep,</p>
<p>Thank you for your comment &#8211; it has drawn my attention to the fact that 11g (possible 11.2) has added a new feature to the pq_distribute hint that was in (or, at least) was not documented for 10g. The &#8220;single distribution&#8221; option for dealing with data loading.</p>
<p>The posting is simply an example of the type of investigation and level of knowledge required to make a decision of the type indicated by the manuals, so the quick answer to your last question is: &#8220;yes&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Amardeep Sidhu</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-48414</link>
		<dc:creator><![CDATA[Amardeep Sidhu]]></dc:creator>
		<pubDate>Fri, 27 Jul 2012 08:49:11 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-48414</guid>
		<description><![CDATA[Jonathan,

&gt;switching to a “broadcast” distribution bypassed the need for any sort of buffering at all, and the I/O to the temporary tablespace disappeared completely

Documentation ( http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements006.htm#BABCJHAF Table 3-23 ) lays down few rules about which distribution method should be used in which case (basically on the basis of difference in size of two table being hash joined)

Your comments on that ? Did you mean the same thing by suggesting &quot;to switch to broadcast distribution in some cases) ?

Regards,
Amardeep Sidhu]]></description>
		<content:encoded><![CDATA[<p>Jonathan,</p>
<p>&gt;switching to a “broadcast” distribution bypassed the need for any sort of buffering at all, and the I/O to the temporary tablespace disappeared completely</p>
<p>Documentation ( <a href="http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements006.htm#BABCJHAF" rel="nofollow">http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements006.htm#BABCJHAF</a> Table 3-23 ) lays down few rules about which distribution method should be used in which case (basically on the basis of difference in size of two table being hash joined)</p>
<p>Your comments on that ? Did you mean the same thing by suggesting &#8220;to switch to broadcast distribution in some cases) ?</p>
<p>Regards,<br />
Amardeep Sidhu</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-37587</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Fri, 22 Oct 2010 21:47:20 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-37587</guid>
		<description><![CDATA[There are at least three different areas to consider. 
a) Buffer memory the process reserves for reading data blocks. This is process memory and is accounted for against the pga_aggregate_target; and I believe there is some scope for adjusting this by playing with the _db_file_direct_io_count (with the usual warning about hidden parameters, of course)

b) Memory used by PX slaves to pass data to other PX slaves - this comes from the SGA, and possibly the only way to modify it would be to change the parallel_execution_message_size (originally the default was ca. 2KB).

c) Memory used by a slave for the &quot;PX Buffer&quot; type of operation described in this note, and that comes out of a normal &#039;pga workarea&#039; - with the usual limitations on how you can affect the amount of memory that can be used for workareas.]]></description>
		<content:encoded><![CDATA[<p>There are at least three different areas to consider.<br />
a) Buffer memory the process reserves for reading data blocks. This is process memory and is accounted for against the pga_aggregate_target; and I believe there is some scope for adjusting this by playing with the _db_file_direct_io_count (with the usual warning about hidden parameters, of course)</p>
<p>b) Memory used by PX slaves to pass data to other PX slaves &#8211; this comes from the SGA, and possibly the only way to modify it would be to change the parallel_execution_message_size (originally the default was ca. 2KB).</p>
<p>c) Memory used by a slave for the &#8220;PX Buffer&#8221; type of operation described in this note, and that comes out of a normal &#8216;pga workarea&#8217; &#8211; with the usual limitations on how you can affect the amount of memory that can be used for workareas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Amir Riaz</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-37585</link>
		<dc:creator><![CDATA[Amir Riaz]]></dc:creator>
		<pubDate>Fri, 22 Oct 2010 10:08:55 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-37585</guid>
		<description><![CDATA[Jonathon,

in this thread, on link

http://oracledoug.com/serendipity/index.php?/archives/774-Direct-Path-Reads.html

The trick with the &quot;direct path reads&quot; is that Oracle manages to dispatch N buffers for read requests (probably 4), which is a CPU and memory intensive strategy, then comes back to the first buffer - which in this case requires a very short wait to fill. Then Oracle uses the data, dispatches a new read and moves on to the second buffer. In the interim the second read has nearly completed, but requires a few more microseconds... if Doug&#039;s hardware were just a little faster, we wouldn&#039;t see any direct path read waits.

Jonathon since parallel processing uses direct path read. if my DOP is 3 and i have 3 producer processes procedusing data for consumer processes. Since PGA is being used for reading data, in which area of PGA data is being buffered and can we increase and decrease the size of that area.]]></description>
		<content:encoded><![CDATA[<p>Jonathon,</p>
<p>in this thread, on link</p>
<p><a href="http://oracledoug.com/serendipity/index.php?/archives/774-Direct-Path-Reads.html" rel="nofollow">http://oracledoug.com/serendipity/index.php?/archives/774-Direct-Path-Reads.html</a></p>
<p>The trick with the &#8220;direct path reads&#8221; is that Oracle manages to dispatch N buffers for read requests (probably 4), which is a CPU and memory intensive strategy, then comes back to the first buffer &#8211; which in this case requires a very short wait to fill. Then Oracle uses the data, dispatches a new read and moves on to the second buffer. In the interim the second read has nearly completed, but requires a few more microseconds&#8230; if Doug&#8217;s hardware were just a little faster, we wouldn&#8217;t see any direct path read waits.</p>
<p>Jonathon since parallel processing uses direct path read. if my DOP is 3 and i have 3 producer processes procedusing data for consumer processes. Since PGA is being used for reading data, in which area of PGA data is being buffered and can we increase and decrease the size of that area.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ora_hash function &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-34888</link>
		<dc:creator><![CDATA[ora_hash function &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Mon, 23 Nov 2009 13:16:27 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-34888</guid>
		<description><![CDATA[[...] be confirmed: Does the ora_hash() function plan any part in parallel query distribution by hash ? One quick test suggests not &#8211; but the method of use in this case may be more subtle than [...]]]></description>
		<content:encoded><![CDATA[<p>[...] be confirmed: Does the ora_hash() function plan any part in parallel query distribution by hash ? One quick test suggests not &#8211; but the method of use in this case may be more subtle than [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-32530</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Mon, 12 Jan 2009 15:15:39 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-32530</guid>
		<description><![CDATA[Ricardo,

That was a description of the sorting mechanism - with the side effect that the memory needed for sorting N items of data required an overhead of roughly (N * 3 * pointer size) bytes - where a pointer is 32 bytes in 4 bytes in 32-bit systems and 8 bytes in 64-bit systems.

I don&#039;t know the algorithm that is used for the so-called &quot;V2&quot; sort in 10.2, but it seems to need an overhead of just one pointer per item. Not only is it less memory intensive, the algorithm is also less CPU intensive.

I think I suggested in my book that it might be a variation of the heap sort algorithm, but I recall an informal comment from an Oracle employee it wasn&#039;t.]]></description>
		<content:encoded><![CDATA[<p>Ricardo,</p>
<p>That was a description of the sorting mechanism &#8211; with the side effect that the memory needed for sorting N items of data required an overhead of roughly (N * 3 * pointer size) bytes &#8211; where a pointer is 32 bytes in 4 bytes in 32-bit systems and 8 bytes in 64-bit systems.</p>
<p>I don&#8217;t know the algorithm that is used for the so-called &#8220;V2&#8243; sort in 10.2, but it seems to need an overhead of just one pointer per item. Not only is it less memory intensive, the algorithm is also less CPU intensive.</p>
<p>I think I suggested in my book that it might be a variation of the heap sort algorithm, but I recall an informal comment from an Oracle employee it wasn&#8217;t.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ricardo</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-32512</link>
		<dc:creator><![CDATA[Ricardo]]></dc:creator>
		<pubDate>Wed, 07 Jan 2009 14:33:30 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-32512</guid>
		<description><![CDATA[Jonathan,

  In a conference you said that until 10.2.0.2 Oracle used binary insertion trees to maintain a map for merges. What are the differences in the  mechanism for sorting in 10.2.0.3 , 10.2.0.4 (and 11g) ?

   Regards.]]></description>
		<content:encoded><![CDATA[<p>Jonathan,</p>
<p>  In a conference you said that until 10.2.0.2 Oracle used binary insertion trees to maintain a map for merges. What are the differences in the  mechanism for sorting in 10.2.0.3 , 10.2.0.4 (and 11g) ?</p>
<p>   Regards.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alberto Dell'Era</title>
		<link>http://jonathanlewis.wordpress.com/2008/11/05/px-buffer/#comment-32445</link>
		<dc:creator><![CDATA[Alberto Dell'Era]]></dc:creator>
		<pubDate>Mon, 22 Dec 2008 11:27:44 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=691#comment-32445</guid>
		<description><![CDATA[Jonathan,

maybe this could be done also to cope with a slow client, or the risk of the client being slow. That is, &quot;partition 8&quot; (that buffers the result set) is dumped to the temp tablespace to enable the kernel to free all the RAM it allocated (that could be huge of course). The result set rows are then read &quot;slowly&quot; as the client asks &quot;slowly&quot; for then by issuing the FETCH db-calls (more in detail, as the virtual tables Q2 become empty thanks to the client reading).

I&#039;m thinking to something similar to the mechanisms linked to the &quot;sort_area_retained_size&quot; parameter for serial sorts.

It couldn&#039;t be that bad when the client is fast enough to consume the result-set as it is produced: when the hash join completes, the buffer is empty, hence there will be nothing to dump.]]></description>
		<content:encoded><![CDATA[<p>Jonathan,</p>
<p>maybe this could be done also to cope with a slow client, or the risk of the client being slow. That is, &#8220;partition 8&#8243; (that buffers the result set) is dumped to the temp tablespace to enable the kernel to free all the RAM it allocated (that could be huge of course). The result set rows are then read &#8220;slowly&#8221; as the client asks &#8220;slowly&#8221; for then by issuing the FETCH db-calls (more in detail, as the virtual tables Q2 become empty thanks to the client reading).</p>
<p>I&#8217;m thinking to something similar to the mechanisms linked to the &#8220;sort_area_retained_size&#8221; parameter for serial sorts.</p>
<p>It couldn&#8217;t be that bad when the client is fast enough to consume the result-set as it is produced: when the hash join completes, the buffer is empty, hence there will be nothing to dump.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
