<?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/"
		>
<channel>
	<title>Comments on: A-Rows and DML Statements</title>
	<atom:link href="http://www.antognini.ch/2009/07/a-rows-and-dml-statements/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.antognini.ch/2009/07/a-rows-and-dml-statements/</link>
	<description></description>
	<lastBuildDate>Thu, 17 May 2012 06:56:24 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: Blogroll Report 24/07/2009 – 31/07/2009 &#171; Coskan&#8217;s Approach to Oracle</title>
		<link>http://www.antognini.ch/2009/07/a-rows-and-dml-statements/#comment-218</link>
		<dc:creator>Blogroll Report 24/07/2009 – 31/07/2009 &#171; Coskan&#8217;s Approach to Oracle</dc:creator>
		<pubDate>Sat, 01 Aug 2009 01:54:05 +0000</pubDate>
		<guid isPermaLink="false">http://antognini.ch/?p=444#comment-218</guid>
		<description>[...] Christian Antognini -A-Rows and DML Statements [...] </description>
		<content:encoded><![CDATA[<p>[...] Christian Antognini -A-Rows and DML Statements [...] </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Timur Akhmadeev</title>
		<link>http://www.antognini.ch/2009/07/a-rows-and-dml-statements/#comment-217</link>
		<dc:creator>Timur Akhmadeev</dc:creator>
		<pubDate>Fri, 31 Jul 2009 13:26:55 +0000</pubDate>
		<guid isPermaLink="false">http://antognini.ch/?p=444#comment-217</guid>
		<description>&gt;I mean, neither an average nor a sum would be good…
Well, sum or sum and avg would be better than nothing.</description>
		<content:encoded><![CDATA[<p>&gt;I mean, neither an average nor a sum would be good…<br />
Well, sum or sum and avg would be better than nothing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christian Antognini</title>
		<link>http://www.antognini.ch/2009/07/a-rows-and-dml-statements/#comment-216</link>
		<dc:creator>Christian Antognini</dc:creator>
		<pubDate>Fri, 31 Jul 2009 12:37:02 +0000</pubDate>
		<guid isPermaLink="false">http://antognini.ch/?p=444#comment-216</guid>
		<description>Hi Timur

Yep, execution plans with PX are even worse ;-) But, honestly, aggregating execution statistics coming from several processes is also not always easy or even meaningful. For example, while it is not a problem to provide the total number of rows returned by a given PX operation (a sum would be ok), what to do with statistics like “A-Time”? I mean, neither an average nor a sum would be good...

Cheers,
Chris</description>
		<content:encoded><![CDATA[<p>Hi Timur</p>
<p>Yep, execution plans with PX are even worse <img src='http://www.antognini.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  But, honestly, aggregating execution statistics coming from several processes is also not always easy or even meaningful. For example, while it is not a problem to provide the total number of rows returned by a given PX operation (a sum would be ok), what to do with statistics like “A-Time”? I mean, neither an average nor a sum would be good&#8230;</p>
<p>Cheers,<br />
Chris</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Timur Akhmadeev</title>
		<link>http://www.antognini.ch/2009/07/a-rows-and-dml-statements/#comment-215</link>
		<dc:creator>Timur Akhmadeev</dc:creator>
		<pubDate>Fri, 31 Jul 2009 11:13:49 +0000</pubDate>
		<guid isPermaLink="false">http://antognini.ch/?p=444#comment-215</guid>
		<description>Christian,

thanks for the info. I guess the most difficult part associated with the change was handling statement restarts. Since restarts might happen during UPDATE which result in partial rollbacks one or more times per execution, it is no longer possible to do just an increment of associated runtime statistic in fixed views on call to update subroutine.
One more critical case where Oracle does not provide runtime execution statistics is PX:
&lt;pre&gt;
--------------------------------------------------------------------------------------
&#124; Id  &#124; Operation                 &#124; Name     &#124; Starts &#124; E-Rows &#124; A-Rows &#124;   A-Time   &#124;
--------------------------------------------------------------------------------------
&#124;   1 &#124;  SORT AGGREGATE           &#124;          &#124;      1 &#124;      1 &#124;      1 &#124;00:00:04.57 &#124;
&#124;   2 &#124;   PX COORDINATOR          &#124;          &#124;      1 &#124;        &#124;      2 &#124;00:00:04.55 &#124;
&#124;   3 &#124;    PX SEND QC (RANDOM)    &#124; :TQ10001 &#124;      0 &#124;      1 &#124;      0 &#124;00:00:00.01 &#124;
&#124;   4 &#124;     SORT AGGREGATE        &#124;          &#124;      0 &#124;      1 &#124;      0 &#124;00:00:00.01 &#124;
&#124;*  5 &#124;      HASH JOIN            &#124;          &#124;      0 &#124;     10M&#124;      0 &#124;00:00:00.01 &#124;
&#124;   6 &#124;       PX BLOCK ITERATOR   &#124;          &#124;      0 &#124;  10000 &#124;      0 &#124;00:00:00.01 &#124;
&#124;*  7 &#124;        TABLE ACCESS FULL  &#124; T        &#124;      0 &#124;  10000 &#124;      0 &#124;00:00:00.01 &#124;
&#124;   8 &#124;       PX RECEIVE          &#124;          &#124;      0 &#124;  10000 &#124;      0 &#124;00:00:00.01 &#124;
&#124;   9 &#124;        PX SEND BROADCAST  &#124; :TQ10000 &#124;      0 &#124;  10000 &#124;      0 &#124;00:00:00.01 &#124;
&#124;  10 &#124;         PX BLOCK ITERATOR &#124;          &#124;      0 &#124;  10000 &#124;      0 &#124;00:00:00.01 &#124;
&#124;* 11 &#124;          TABLE ACCESS FULL&#124; T        &#124;      0 &#124;  10000 &#124;      0 &#124;00:00:00.01 &#124;
--------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - access(&quot;T1&quot;.&quot;ID&quot;=&quot;T2&quot;.&quot;ID&quot;)
   7 - access(:Z&gt;=:Z AND :Z&lt;=:Z)
  11 - access(:Z&gt;=:Z AND :Z&lt;=:Z)
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>Christian,</p>
<p>thanks for the info. I guess the most difficult part associated with the change was handling statement restarts. Since restarts might happen during UPDATE which result in partial rollbacks one or more times per execution, it is no longer possible to do just an increment of associated runtime statistic in fixed views on call to update subroutine.<br />
One more critical case where Oracle does not provide runtime execution statistics is PX:</p>
<pre>
--------------------------------------------------------------------------------------
| Id  | Operation                 | Name     | Starts | E-Rows | A-Rows |   A-Time   |
--------------------------------------------------------------------------------------
|   1 |  SORT AGGREGATE           |          |      1 |      1 |      1 |00:00:04.57 |
|   2 |   PX COORDINATOR          |          |      1 |        |      2 |00:00:04.55 |
|   3 |    PX SEND QC (RANDOM)    | :TQ10001 |      0 |      1 |      0 |00:00:00.01 |
|   4 |     SORT AGGREGATE        |          |      0 |      1 |      0 |00:00:00.01 |
|*  5 |      HASH JOIN            |          |      0 |     10M|      0 |00:00:00.01 |
|   6 |       PX BLOCK ITERATOR   |          |      0 |  10000 |      0 |00:00:00.01 |
|*  7 |        TABLE ACCESS FULL  | T        |      0 |  10000 |      0 |00:00:00.01 |
|   8 |       PX RECEIVE          |          |      0 |  10000 |      0 |00:00:00.01 |
|   9 |        PX SEND BROADCAST  | :TQ10000 |      0 |  10000 |      0 |00:00:00.01 |
|  10 |         PX BLOCK ITERATOR |          |      0 |  10000 |      0 |00:00:00.01 |
|* 11 |          TABLE ACCESS FULL| T        |      0 |  10000 |      0 |00:00:00.01 |
--------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - access("T1"."ID"="T2"."ID")
   7 - access(:Z>=:Z AND :Z< =:Z)
  11 - access(:Z>=:Z AND :Z< =:Z)
</pre>
</pre>
]]></content:encoded>
	</item>
</channel>
</rss>

