<?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: The Core Performance Fundamentals Of Oracle Data Warehousing &#8211; Partitioning</title>
	<atom:link href="http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/feed/" rel="self" type="application/rss+xml" />
	<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning</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>By: Greg Rahn</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-23114</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Fri, 23 Sep 2011 15:10:11 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-23114</guid>
		<description>Understand that indexes are structures to access data sets that are very selective (few rows).   If a query needs 1/10 of the data in the table (1M of 10M rows, in this case) that really is not selective enough for an index.  Besides, in the worse case (1 row you want per block), that would translate in 1M single block reads.  With a partition scan, the IO size could be up to 1MB.   So you see the difference here?  If you have to access a significant amount of blocks would you rather do that one 8KB block at a time, or 1MB (128 8K blocks) at a time.  It simply comes down to the physics of data access and the times associated with it.</description>
		<content:encoded><![CDATA[<p>Understand that indexes are structures to access data sets that are very selective (few rows).   If a query needs 1/10 of the data in the table (1M of 10M rows, in this case) that really is not selective enough for an index.  Besides, in the worse case (1 row you want per block), that would translate in 1M single block reads.  With a partition scan, the IO size could be up to 1MB.   So you see the difference here?  If you have to access a significant amount of blocks would you rather do that one 8KB block at a time, or 1MB (128 8K blocks) at a time.  It simply comes down to the physics of data access and the times associated with it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ivin kris</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-23111</link>
		<dc:creator>ivin kris</dc:creator>
		<pubDate>Fri, 23 Sep 2011 11:30:20 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-23111</guid>
		<description>I read this, 
&quot;Partition pruning is the simplest and also the most substantial means to improve performance using partitioning. Partition pruning can often improve query performance by several orders of magnitude. For example, suppose an application contains an Orders table containing a historical record of orders, and that this table has been partitioned by week. A query requesting orders for a single week would only access a single partition of the Orders table. If the Orders table had 2 years of historical data, then this query would access one partition instead of 104 partitions. This query could potentially execute 100 times faster simply because of partition pruning.&quot;

THat is where I am not sure, how. If the business date column is indexed, in a table of 10 million rows, 1 million being in the current business date, how does partitions limit the number of rows to be scanned. It does tell what internally it means to say that the queries can execute faster in smaller partitions than the ones scanning multiple partitions. I am an application programmer and not a DBA. Is it possible to give little more indepth explanation of an overhead associated to multi-partitions scanning and the performance issues related to it. And I am not even talking about multi-partitions here. What if the table isn&#039;t partitioned at all. Will the query still perform slower?</description>
		<content:encoded><![CDATA[<p>I read this,<br />
&#8220;Partition pruning is the simplest and also the most substantial means to improve performance using partitioning. Partition pruning can often improve query performance by several orders of magnitude. For example, suppose an application contains an Orders table containing a historical record of orders, and that this table has been partitioned by week. A query requesting orders for a single week would only access a single partition of the Orders table. If the Orders table had 2 years of historical data, then this query would access one partition instead of 104 partitions. This query could potentially execute 100 times faster simply because of partition pruning.&#8221;</p>
<p>THat is where I am not sure, how. If the business date column is indexed, in a table of 10 million rows, 1 million being in the current business date, how does partitions limit the number of rows to be scanned. It does tell what internally it means to say that the queries can execute faster in smaller partitions than the ones scanning multiple partitions. I am an application programmer and not a DBA. Is it possible to give little more indepth explanation of an overhead associated to multi-partitions scanning and the performance issues related to it. And I am not even talking about multi-partitions here. What if the table isn&#8217;t partitioned at all. Will the query still perform slower?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Rahn</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-23108</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Fri, 23 Sep 2011 04:40:14 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-23108</guid>
		<description>Again, I&#039;d suggest to read the &lt;a href=&quot;http://download.oracle.com/docs/cd/E11882_01/server.112/e16541/toc.htm&quot; rel=&quot;nofollow&quot;&gt;Database VLDB and Partitioning Guide&lt;/a&gt;.  Many of these topics are discussed there.</description>
		<content:encoded><![CDATA[<p>Again, I&#8217;d suggest to read the <a href="http://download.oracle.com/docs/cd/E11882_01/server.112/e16541/toc.htm" rel="nofollow">Database VLDB and Partitioning Guide</a>.  Many of these topics are discussed there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Rahn</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-23107</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Fri, 23 Sep 2011 04:36:49 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-23107</guid>
		<description>&lt;strong&gt;1) I meant that if the BTree is balanced and the depth is always 3, the number of io’s needed to select data in a table without partitions vs with partitions should not have difference.isn’t it? Why is it said that partitions eliminate the need to scan largely unwanted data. Could you please explain.
&lt;/strong&gt;

Again, index balance and depth has nothing to do with the number of IOs to the table.  It&#039;s also irrelevant to the point being made here.  Partitioning allows the identification of data that is not needed.  I&#039;d suggest you read &lt;a href=&quot;http://download.oracle.com/docs/cd/E11882_01/server.112/e16541/partition.htm#I1050101&quot; rel=&quot;nofollow&quot;&gt;Partition Pruning&lt;/a&gt; section in the &lt;a href=&quot;http://download.oracle.com/docs/cd/E11882_01/server.112/e16541/partition.htm&quot; rel=&quot;nofollow&quot;&gt;Partitioning Concepts&lt;/a&gt; chapter of the &lt;a href=&quot;http://download.oracle.com/docs/cd/E11882_01/server.112/e16541/toc.htm&quot; rel=&quot;nofollow&quot;&gt;VLDB and Partitioning Guide&lt;/a&gt; -- it explains it all.

&lt;strong&gt;2) if oracle uses multi-version read concurrency why does large data load have contentions with other transactions reading data from the table. It shouldn’t isn’t it?&lt;/strong&gt;

It&#039; doesn&#039;t.  Not sure where you are reading that from my post.

&lt;strong&gt;3) Depending on the reuirement? My requirement is that I ma having to update large amount of data in the table when the users are running queries against it. Do I need a partition swap in this scenario was my question.&lt;/strong&gt;

Bulk updates in general should be avoided.  Bulk updates 1) are logging and 2) are slowed down by compression.  The fastest way to do a bulk update is to do a nologging insert, changed the data in flight, and partition swap or table rename, given an appropriately sized system.</description>
		<content:encoded><![CDATA[<p><strong>1) I meant that if the BTree is balanced and the depth is always 3, the number of io’s needed to select data in a table without partitions vs with partitions should not have difference.isn’t it? Why is it said that partitions eliminate the need to scan largely unwanted data. Could you please explain.<br />
</strong></p>
<p>Again, index balance and depth has nothing to do with the number of IOs to the table.  It&#8217;s also irrelevant to the point being made here.  Partitioning allows the identification of data that is not needed.  I&#8217;d suggest you read <a href="http://download.oracle.com/docs/cd/E11882_01/server.112/e16541/partition.htm#I1050101" rel="nofollow">Partition Pruning</a> section in the <a href="http://download.oracle.com/docs/cd/E11882_01/server.112/e16541/partition.htm" rel="nofollow">Partitioning Concepts</a> chapter of the <a href="http://download.oracle.com/docs/cd/E11882_01/server.112/e16541/toc.htm" rel="nofollow">VLDB and Partitioning Guide</a> &#8212; it explains it all.</p>
<p><strong>2) if oracle uses multi-version read concurrency why does large data load have contentions with other transactions reading data from the table. It shouldn’t isn’t it?</strong></p>
<p>It&#8217; doesn&#8217;t.  Not sure where you are reading that from my post.</p>
<p><strong>3) Depending on the reuirement? My requirement is that I ma having to update large amount of data in the table when the users are running queries against it. Do I need a partition swap in this scenario was my question.</strong></p>
<p>Bulk updates in general should be avoided.  Bulk updates 1) are logging and 2) are slowed down by compression.  The fastest way to do a bulk update is to do a nologging insert, changed the data in flight, and partition swap or table rename, given an appropriately sized system.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ivin kris</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-23105</link>
		<dc:creator>ivin kris</dc:creator>
		<pubDate>Fri, 23 Sep 2011 03:11:43 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-23105</guid>
		<description>Assuming I have range partition on the date column, all the users are running queries for the same date(current business date), when I have large updates that needs to be processed for the data in this partition,

1) How does partition swap help for large load manageability reducing contentions with user read activities. Isn’t the multi-version read consistency already addressing the contention?
2) If there was no partition, why would the number of rows to be scanned becomes more if all the queries need the data for the same date (Current business date) (the business date column is indexed)</description>
		<content:encoded><![CDATA[<p>Assuming I have range partition on the date column, all the users are running queries for the same date(current business date), when I have large updates that needs to be processed for the data in this partition,</p>
<p>1) How does partition swap help for large load manageability reducing contentions with user read activities. Isn’t the multi-version read consistency already addressing the contention?<br />
2) If there was no partition, why would the number of rows to be scanned becomes more if all the queries need the data for the same date (Current business date) (the business date column is indexed)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ivin kris</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-23100</link>
		<dc:creator>ivin kris</dc:creator>
		<pubDate>Fri, 23 Sep 2011 02:48:54 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-23100</guid>
		<description>1) I meant that if the BTree is balanced and the depth is always 3, the number of io&#039;s needed to select data in a table without partitions vs with partitions should not have difference.isn&#039;t it? Why is it said that partitions eliminate the need to scan largely unwanted data. Could you please explain.
2) if oracle uses multi-version read concurrency why does large data load have contentions with other transactions reading data from the table. It shouldn&#039;t isn&#039;t it?
3) Depending on the reuirement? My requirement is that I ma having to update large amount of data in the table when the users are running queries against it. Do I need a partition swap in this scenario was my question.</description>
		<content:encoded><![CDATA[<p>1) I meant that if the BTree is balanced and the depth is always 3, the number of io&#8217;s needed to select data in a table without partitions vs with partitions should not have difference.isn&#8217;t it? Why is it said that partitions eliminate the need to scan largely unwanted data. Could you please explain.<br />
2) if oracle uses multi-version read concurrency why does large data load have contentions with other transactions reading data from the table. It shouldn&#8217;t isn&#8217;t it?<br />
3) Depending on the reuirement? My requirement is that I ma having to update large amount of data in the table when the users are running queries against it. Do I need a partition swap in this scenario was my question.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Rahn</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-23099</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Fri, 23 Sep 2011 02:32:20 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-23099</guid>
		<description>&lt;strong&gt;If Oracle B Tree index is balanced, why would a table with no paritions need to scan more rows if the time column is index and the query is based on that?&lt;/strong&gt;
First, balance has nothing to do with what rows are retrieved from a table.  Partitioning allows multi-block scans, where index access translates to single block access to the table.  For a large number of rows partitioning will prevail when it comes to performance.

&lt;strong&gt;And if oracle uses multi-version read concurrency why does large data load bother concurrency? &lt;/strong&gt;
Bother concurrency of what?

&lt;strong&gt;Why can I not load large data directly to the table instead of loading to temp table and swapping the partition?&lt;/strong&gt;
You can certainly load directly into a table.  Both are options depending on the requirements.</description>
		<content:encoded><![CDATA[<p><strong>If Oracle B Tree index is balanced, why would a table with no paritions need to scan more rows if the time column is index and the query is based on that?</strong><br />
First, balance has nothing to do with what rows are retrieved from a table.  Partitioning allows multi-block scans, where index access translates to single block access to the table.  For a large number of rows partitioning will prevail when it comes to performance.</p>
<p><strong>And if oracle uses multi-version read concurrency why does large data load bother concurrency? </strong><br />
Bother concurrency of what?</p>
<p><strong>Why can I not load large data directly to the table instead of loading to temp table and swapping the partition?</strong><br />
You can certainly load directly into a table.  Both are options depending on the requirements.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ivin kris</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-23098</link>
		<dc:creator>ivin kris</dc:creator>
		<pubDate>Fri, 23 Sep 2011 02:14:40 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-23098</guid>
		<description>If Oracle B Tree index is balanced, why would a table with no paritions need to scan more rows if the time column is index and the query is based on that? And if oracle uses multi-version read concurrency why does large data load bother concurrency? Why can I not load large data directly to the table instead of loading to temp table and swapping the partition?</description>
		<content:encoded><![CDATA[<p>If Oracle B Tree index is balanced, why would a table with no paritions need to scan more rows if the time column is index and the query is based on that? And if oracle uses multi-version read concurrency why does large data load bother concurrency? Why can I not load large data directly to the table instead of loading to temp table and swapping the partition?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Rahn</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-17112</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Mon, 28 Mar 2011 03:22:17 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-17112</guid>
		<description>@Eric

&quot;The Product_Dim (SCD-1) has a composite PK (COMPANY_ID, ITEM_ID)&quot;

I think your problem starts there.  I&#039;m quite sure that dimensions are supposed to have a single column surrogate primary key.  It seems to me like your product_dim table has both products and companies in it (500M unique products does seem rather large to me.)

Partitioning has a purpose, be it for queries or for loads; what is the purpose of your partitioning?</description>
		<content:encoded><![CDATA[<p>@Eric</p>
<p>&#8220;The Product_Dim (SCD-1) has a composite PK (COMPANY_ID, ITEM_ID)&#8221;</p>
<p>I think your problem starts there.  I&#8217;m quite sure that dimensions are supposed to have a single column surrogate primary key.  It seems to me like your product_dim table has both products and companies in it (500M unique products does seem rather large to me.)</p>
<p>Partitioning has a purpose, be it for queries or for loads; what is the purpose of your partitioning?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric</title>
		<link>http://structureddata.org/2010/01/25/the-core-performance-fundamentals-of-oracle-data-warehousing-partitioning/#comment-17037</link>
		<dc:creator>Eric</dc:creator>
		<pubDate>Wed, 23 Mar 2011 18:36:35 +0000</pubDate>
		<guid isPermaLink="false">http://structureddata.org/?p=816#comment-17037</guid>
		<description>&quot;There are more than 500M unique PK in this dimension&quot; means &quot;There are more than 500M unique PK values in this dimension&quot;</description>
		<content:encoded><![CDATA[<p>&#8220;There are more than 500M unique PK in this dimension&#8221; means &#8220;There are more than 500M unique PK values in this dimension&#8221;</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/3 queries in 0.001 seconds using disk: basic
Object Caching 406/407 objects using disk: basic

Served from: structureddata.org @ 2012-02-09 18:35:39 -->
