<?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 for Structured Data</title>
	<atom:link href="http://structureddata.org/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://structureddata.org</link>
	<description>Data, Databases, Performance &#38; Scalability</description>
	<lastBuildDate>Mon, 30 Jan 2012 17:05:12 -0500</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Comment on Creating Optimizer Trace Files by Dynamic Sampling (I), an Introduction &#8211; Part 1 &#8211; All Things Oracle</title>
		<link>http://structureddata.org/2011/08/18/creating-optimizer-trace-files/#comment-25481</link>
		<dc:creator>Dynamic Sampling (I), an Introduction &#8211; Part 1 &#8211; All Things Oracle</dc:creator>
		<pubDate>Mon, 30 Jan 2012 17:05:12 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=1501#comment-25481</guid>
		<description>[...] be officially supported. More information can be found on the Optimizer Development team blog and here. In the resulting trace file you&#8217;ll find details about the Dynamic Sampling activity [...]</description>
		<content:encoded><![CDATA[<p>[...] be officially supported. More information can be found on the Optimizer Development team blog and here. In the resulting trace file you&#8217;ll find details about the Dynamic Sampling activity [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Core Performance Fundamentals Of Oracle Data Warehousing – Balanced Hardware Configuration by Greg Rahn</title>
		<link>http://structureddata.org/2009/12/22/the-core-performance-fundamentals-of-oracle-data-warehousing-balanced-hardware-configuration/#comment-25450</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Fri, 27 Jan 2012 00:08:47 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/2009/12/13/the-core-performance-fundamentals-of-oracle-data-warehousing-balanced-hardware-configuration/#comment-25450</guid>
		<description>The rate at which CPUs can consume data can be tested in a lab with some relatively simple micro-benchmark tests.  It does vary for CPU type, etc.</description>
		<content:encoded><![CDATA[<p>The rate at which CPUs can consume data can be tested in a lab with some relatively simple micro-benchmark tests.  It does vary for CPU type, etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Core Performance Fundamentals Of Oracle Data Warehousing – Balanced Hardware Configuration by nm</title>
		<link>http://structureddata.org/2009/12/22/the-core-performance-fundamentals-of-oracle-data-warehousing-balanced-hardware-configuration/#comment-25447</link>
		<dc:creator>nm</dc:creator>
		<pubDate>Thu, 26 Jan 2012 13:09:45 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/2009/12/13/the-core-performance-fundamentals-of-oracle-data-warehousing-balanced-hardware-configuration/#comment-25447</guid>
		<description>Hi Greg,
I know this is an old article but here goes anyway, you said the following in your post:
.
What rate (in MB/GB per second) can the CPUs consume data?
.
How does one go about computing that - does each CPU depending on the type have an average number for how much data can be consumed? Much like disks have average IOPS? Or is this something that can be computed from an AWR report by looking at how many IOPS are being performed and multiplying that with the database block size?
thanks</description>
		<content:encoded><![CDATA[<p>Hi Greg,<br />
I know this is an old article but here goes anyway, you said the following in your post:<br />
.<br />
What rate (in MB/GB per second) can the CPUs consume data?<br />
.<br />
How does one go about computing that &#8211; does each CPU depending on the type have an average number for how much data can be consumed? Much like disks have average IOPS? Or is this something that can be computed from an AWR report by looking at how many IOPS are being performed and multiplying that with the database block size?<br />
thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Data Science Fun with the OOW Mix Session Voting Data by DB Optimizer &#187; ASH Visualizations: R, ggplot2, Gephi, Jit, HighCharts, Excel ,SVG</title>
		<link>http://structureddata.org/2011/06/23/data-science-fun-with-the-oow-mix-session-voting-data/#comment-25419</link>
		<dc:creator>DB Optimizer &#187; ASH Visualizations: R, ggplot2, Gephi, Jit, HighCharts, Excel ,SVG</dc:creator>
		<pubDate>Sun, 22 Jan 2012 08:23:27 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=1419#comment-25419</guid>
		<description>[...] The first example is using Gephi. The coolest example of Gephi I&#8217;ve seen is Greg Rahn&#8217;s analysis of the voting for Oracle World mix sessions.  [...]</description>
		<content:encoded><![CDATA[<p>[...] The first example is using Gephi. The coolest example of Gephi I&#8217;ve seen is Greg Rahn&#8217;s analysis of the voting for Oracle World mix sessions.  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Visualizing Active Session History (ASH) Data With R by Greg Rahn</title>
		<link>http://structureddata.org/2011/12/20/visualizing-active-session-history-ash-data-with-r/#comment-25170</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Thu, 05 Jan 2012 17:55:39 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=1684#comment-25170</guid>
		<description>In my opinion, looking at performance data is much the same as looking at most any other data set these days.  The &quot;data science&quot; term can be applied as well -- I need to find my data source (say host or database and what metrics from either or both) and then massage them into whatever format I need for my analysis and then poke around.  Doing things like outlier detection, correlation and data visualizations are just a few things I&#039;ve done with R.  I have a few more things in the pipeline so stay tuned!</description>
		<content:encoded><![CDATA[<p>In my opinion, looking at performance data is much the same as looking at most any other data set these days.  The &#8220;data science&#8221; term can be applied as well &#8212; I need to find my data source (say host or database and what metrics from either or both) and then massage them into whatever format I need for my analysis and then poke around.  Doing things like outlier detection, correlation and data visualizations are just a few things I&#8217;ve done with R.  I have a few more things in the pipeline so stay tuned!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Visualizing Active Session History (ASH) Data With R by Dom Giles</title>
		<link>http://structureddata.org/2011/12/20/visualizing-active-session-history-ash-data-with-r/#comment-25166</link>
		<dc:creator>Dom Giles</dc:creator>
		<pubDate>Thu, 05 Jan 2012 13:07:58 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=1684#comment-25166</guid>
		<description>Hi Greg...

Very nice. Since most of the stats we tend to look at our DB stats as opposed to business information it&#039;s nice to see a use of R relevant to some of the work we do...

Alternatively I&#039;ve put together a slightly more dynamic database time monitor here... 

http://www.dominicgiles.com/dbtimeviewer.html

Having said that... I&#039;m drawn to your R approach.... not sure why.

Great examples....

Dom.</description>
		<content:encoded><![CDATA[<p>Hi Greg&#8230;</p>
<p>Very nice. Since most of the stats we tend to look at our DB stats as opposed to business information it&#8217;s nice to see a use of R relevant to some of the work we do&#8230;</p>
<p>Alternatively I&#8217;ve put together a slightly more dynamic database time monitor here&#8230; </p>
<p><a href="http://www.dominicgiles.com/dbtimeviewer.html" rel="nofollow">http://www.dominicgiles.com/dbtimeviewer.html</a></p>
<p>Having said that&#8230; I&#8217;m drawn to your R approach&#8230;. not sure why.</p>
<p>Great examples&#8230;.</p>
<p>Dom.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Philosophy &#8211; Measurement by Richard Gowan</title>
		<link>http://structureddata.org/2011/05/24/philosophy-measurement/#comment-25087</link>
		<dc:creator>Richard Gowan</dc:creator>
		<pubDate>Sun, 01 Jan 2012 03:26:05 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=1361#comment-25087</guid>
		<description>I like the sentiment - but strongly urge a distrust of simple generalisations.</description>
		<content:encoded><![CDATA[<p>I like the sentiment &#8211; but strongly urge a distrust of simple generalisations.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on DBMS_STATS, METHOD_OPT and FOR ALL INDEXED COLUMNS by Greg Rahn</title>
		<link>http://structureddata.org/2008/10/14/dbms_stats-method_opt-and-for-all-indexed-columns/#comment-25043</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Thu, 29 Dec 2011 18:00:25 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=190#comment-25043</guid>
		<description>Do note, you are taking that comment out of context.  It is 100% correct as stated, but it is not meant to cover 100% of the use cases.
Notice that I say if there are no stats, then dynamic sampling is guaranteed to kick in (given default parameters and it meets the criteria), however, I &lt;em&gt;do not&lt;/em&gt; say dynamic sampling won&#039;t kick in if the table does have stats.  Stating the positive does not negate the negative.
It&#039;s all in the documentation: http://docs.oracle.com/cd/E11882_01/server.112/e16638/stats.htm#CHDHAFBJ

In your case dynamic sampling kicks in no matter what because you have a type conversion: the bind variable is a number, but the column is a string.</description>
		<content:encoded><![CDATA[<p>Do note, you are taking that comment out of context.  It is 100% correct as stated, but it is not meant to cover 100% of the use cases.<br />
Notice that I say if there are no stats, then dynamic sampling is guaranteed to kick in (given default parameters and it meets the criteria), however, I <em>do not</em> say dynamic sampling won&#8217;t kick in if the table does have stats.  Stating the positive does not negate the negative.<br />
It&#8217;s all in the documentation: <a href="http://docs.oracle.com/cd/E11882_01/server.112/e16638/stats.htm#CHDHAFBJ" rel="nofollow">http://docs.oracle.com/cd/E11882_01/server.112/e16638/stats.htm#CHDHAFBJ</a></p>
<p>In your case dynamic sampling kicks in no matter what because you have a type conversion: the bind variable is a number, but the column is a string.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on DBMS_STATS, METHOD_OPT and FOR ALL INDEXED COLUMNS by Khurram</title>
		<link>http://structureddata.org/2008/10/14/dbms_stats-method_opt-and-for-all-indexed-columns/#comment-25032</link>
		<dc:creator>Khurram</dc:creator>
		<pubDate>Thu, 29 Dec 2011 09:43:19 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=190#comment-25032</guid>
		<description>Greg great article , one thing i intend to clear that you said

&quot;Obviously if the table has no stats (as in your test case) or you use an explicit hint, dynamic sampling will kick in, even with bind variables.&quot;

dynamic simply will kick in either you have stats or not.
&lt;pre&gt;
SQL&gt; create table regions2
  2  (region_id  varchar2(10) primary key,
  3   region_name varchar2(25))
  4  /

Table created.

SQL&gt; insert into regions2 values (&#039;1&#039;,&#039;A&#039;)
  2  /

1 row created.

SQL&gt; insert into regions2 values (2,&#039;B&#039;)
  2  /

1 row created.

SQL&gt; insert into regions2 values (&#039;3&#039;,&#039;C&#039;)
  2  /

1 row created.

SQL&gt; insert into regions2 values (&#039;4&#039;,&#039;D&#039;)
  2  /

1 row created.

SQL&gt; commit
  2  /

Commit complete.

SQL&gt; select * from regions2
  2  /

REGION_ID  REGION_NAME
---------- -------------------------
1          A
2          B
3          C
4          D

SQL&gt; variable regid number
SQL&gt; exec :regid:=1

PL/SQL procedure successfully completed.

SQL&gt; select /*+ gather_plan_statistics */ *
  2    from regions2
  3   where region_id=:regid
  4  /

REGION_ID  REGION_NAME
---------- -------------------------
1          A

SQL&gt; SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,&#039;ALLSTATS LAST&#039;))
  2  /

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID  27wd2gm8ruukh, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ *   from regions2   where region_id=:regid

Plan hash value: 670750275

----------------------------------------------------------------------------------------
&#124; Id  &#124; Operation         &#124; Name     &#124; Starts &#124; E-Rows &#124; A-Rows &#124;   A-Time   &#124; Buffers &#124;
----------------------------------------------------------------------------------------
&#124;*  1 &#124;  TABLE ACCESS FULL&#124; REGIONS2 &#124;      1 &#124;      1 &#124;      1 &#124;00:00:00.01 &#124;      16 &#124;
----------------------------------------------------------------------------------------

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------

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

   1 - filter(TO_NUMBER(&quot;REGION_ID&quot;)=:REGID)

Note
-----
   - dynamic sampling used for this statement


21 rows selected.

SQL&gt; exec dbms_stats.gather_table_stats(&#039;APPS&#039;,&#039;REGIONS2&#039;,cascade=&gt;true,method_opt=&gt;&#039;for all columns size 254&#039;)

PL/SQL procedure successfully completed.

SQL&gt; select /*+ gather_plan_statistics */ *
  2    from regions2
  3    where region_id=:regid
  4  /

REGION_ID  REGION_NAME
---------- -------------------------
1          A

SQL&gt; SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,&#039;ALLSTATS LAST&#039;))
  2  /

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID  27wd2gm8ruukh, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ *   from regions2   where region_id=:regid

Plan hash value: 670750275

----------------------------------------------------------------------------------------
&#124; Id  &#124; Operation         &#124; Name     &#124; Starts &#124; E-Rows &#124; A-Rows &#124;   A-Time   &#124; Buffers &#124;
----------------------------------------------------------------------------------------
&#124;*  1 &#124;  TABLE ACCESS FULL&#124; REGIONS2 &#124;      1 &#124;      1 &#124;      1 &#124;00:00:00.01 &#124;      16 &#124;
----------------------------------------------------------------------------------------

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------

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

   1 - filter(TO_NUMBER(&quot;REGION_ID&quot;)=:REGID)

Note
-----
   - dynamic sampling used for this statement


21 rows selected.
&lt;/pre&gt;

Khurram</description>
		<content:encoded><![CDATA[<p>Greg great article , one thing i intend to clear that you said</p>
<p>&#8220;Obviously if the table has no stats (as in your test case) or you use an explicit hint, dynamic sampling will kick in, even with bind variables.&#8221;</p>
<p>dynamic simply will kick in either you have stats or not.</p>
<pre>
SQL&gt; create table regions2
  2  (region_id  varchar2(10) primary key,
  3   region_name varchar2(25))
  4  /

Table created.

SQL&gt; insert into regions2 values ('1','A')
  2  /

1 row created.

SQL&gt; insert into regions2 values (2,'B')
  2  /

1 row created.

SQL&gt; insert into regions2 values ('3','C')
  2  /

1 row created.

SQL&gt; insert into regions2 values ('4','D')
  2  /

1 row created.

SQL&gt; commit
  2  /

Commit complete.

SQL&gt; select * from regions2
  2  /

REGION_ID  REGION_NAME
---------- -------------------------
1          A
2          B
3          C
4          D

SQL&gt; variable regid number
SQL&gt; exec :regid:=1

PL/SQL procedure successfully completed.

SQL&gt; select /*+ gather_plan_statistics */ *
  2    from regions2
  3   where region_id=:regid
  4  /

REGION_ID  REGION_NAME
---------- -------------------------
1          A

SQL&gt; SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'))
  2  /

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID  27wd2gm8ruukh, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ *   from regions2   where region_id=:regid

Plan hash value: 670750275

----------------------------------------------------------------------------------------
| Id  | Operation         | Name     | Starts | E-Rows | A-Rows |   A-Time   | Buffers |
----------------------------------------------------------------------------------------
|*  1 |  TABLE ACCESS FULL| REGIONS2 |      1 |      1 |      1 |00:00:00.01 |      16 |
----------------------------------------------------------------------------------------

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------

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

   1 - filter(TO_NUMBER("REGION_ID")=:REGID)

Note
-----
   - dynamic sampling used for this statement

21 rows selected.

SQL&gt; exec dbms_stats.gather_table_stats('APPS','REGIONS2',cascade=&gt;true,method_opt=&gt;'for all columns size 254')

PL/SQL procedure successfully completed.

SQL&gt; select /*+ gather_plan_statistics */ *
  2    from regions2
  3    where region_id=:regid
  4  /

REGION_ID  REGION_NAME
---------- -------------------------
1          A

SQL&gt; SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'))
  2  /

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID  27wd2gm8ruukh, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ *   from regions2   where region_id=:regid

Plan hash value: 670750275

----------------------------------------------------------------------------------------
| Id  | Operation         | Name     | Starts | E-Rows | A-Rows |   A-Time   | Buffers |
----------------------------------------------------------------------------------------
|*  1 |  TABLE ACCESS FULL| REGIONS2 |      1 |      1 |      1 |00:00:00.01 |      16 |
----------------------------------------------------------------------------------------

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------

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

   1 - filter(TO_NUMBER("REGION_ID")=:REGID)

Note
-----
   - dynamic sampling used for this statement

21 rows selected.
</pre>
<p>Khurram</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Visualizing Active Session History (ASH) Data With R by John Beresniewicz</title>
		<link>http://structureddata.org/2011/12/20/visualizing-active-session-history-ash-data-with-r/#comment-25027</link>
		<dc:creator>John Beresniewicz</dc:creator>
		<pubDate>Wed, 28 Dec 2011 20:51:21 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=1684#comment-25027</guid>
		<description>Nice pseudo-code for the sampling logic Greg, and your explanation is exactly right.

When thinking about ASH data and what it means it is really important to remember that ASH is sampling SESSION ACTIVITY, not wait events. Sessions on CPU and in non-idle wait are considered active so sessions in these states are the ones sampled.

The sampling is unbiased in the (wall clock) time dimension in that the sampler wakes up like clockwork and does its thing. However the sampling IS biased relative to the event TIME_WAITED dimension since longer non-idle waits have higher probability of being sampled. ASH does not try to sample the longest or shortest events since last sample, simply the current event at sample time, whatever it is.

So you cannot in general do something like:

 SELECT event, MAX(time_waited) from V$ASH group by event;

and think you are actually getting the maximum time_waited by event, since the event with max time_waited may not have been sampled.</description>
		<content:encoded><![CDATA[<p>Nice pseudo-code for the sampling logic Greg, and your explanation is exactly right.</p>
<p>When thinking about ASH data and what it means it is really important to remember that ASH is sampling SESSION ACTIVITY, not wait events. Sessions on CPU and in non-idle wait are considered active so sessions in these states are the ones sampled.</p>
<p>The sampling is unbiased in the (wall clock) time dimension in that the sampler wakes up like clockwork and does its thing. However the sampling IS biased relative to the event TIME_WAITED dimension since longer non-idle waits have higher probability of being sampled. ASH does not try to sample the longest or shortest events since last sample, simply the current event at sample time, whatever it is.</p>
<p>So you cannot in general do something like:</p>
<p> SELECT event, MAX(time_waited) from V$ASH group by event;</p>
<p>and think you are actually getting the maximum time_waited by event, since the event with max time_waited may not have been sampled.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced (User agent is rejected)
Database Caching 1/5 queries in 0.002 seconds using disk: basic
Object Caching 411/413 objects using disk: basic

Served from: structureddata.org @ 2012-02-03 23:39:44 -->
