<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OS与Oracle &#187; DOP</title>
	<atom:link href="http://www.os2ora.com/tag/dop/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.os2ora.com</link>
	<description>专注于现实世界Oracle数据库的高性能，高可扩展性与新一代数据库Exadata架构</description>
	<lastBuildDate>Fri, 16 Jul 2010 02:55:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>如何决定Hash Partitions的数目</title>
		<link>http://www.os2ora.com/how-to-decide-the-number-of-hash-partitions/</link>
		<comments>http://www.os2ora.com/how-to-decide-the-number-of-hash-partitions/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 13:14:57 +0000</pubDate>
		<dc:creator>Kaya</dc:creator>
				<category><![CDATA[数据库性能调优]]></category>
		<category><![CDATA[DOP]]></category>
		<category><![CDATA[hash partitioning]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[partition-wise join]]></category>

		<guid isPermaLink="false">http://www.os2ora.com/%e5%a6%82%e4%bd%95%e5%86%b3%e5%ae%9ahash-partitions%e7%9a%84%e6%95%b0%e7%9b%ae/</guid>
		<description><![CDATA[Oracle也广泛地使用着Hash算法，Hash Partitioning就是在数据仓库应用中的一个典型例子。Hash Partitioning的一个最大的优势就是实现partition wise join.一个要考虑的问题在于hash partitions数目的选择，一个总的原则是它应该是2的乘方，如4,8,16,32,64,128…另一个要考虑的方面在于硬件的处理能力，对了，就是RAC里面的节点数，还有每个节点CPU Cores的多少。说得再具体一点，就是默认的DOP的大小(默认DOP = 2 * cpu_count * number of nodes in the cluster)。一般而言，把hash partitions的个数设置成默认的DOP是一个推荐的设置值......]]></description>
			<content:encoded><![CDATA[<p>Kaya 发表于 <a href="http://www.os2ora.com">os2ora.com</a></p>
<p>Hash也许是计算机科学里的一个重大发明，简单地说，Hash函数实现把一个值映射到相应的buckets里。而Hash函数也在数据仓库领域发挥着举足轻重的作用。</p>
<p>Teradata，一个专注于数据仓库应用的数据库。把并行发挥到极致，它的哲学就在于把任何一个操作都并行化。而并行的基础就在于对数据的Hash分布，通过Hash，实现数据的均匀分布，从而使得并行处理的各个进程能够分担大约相等的任务。</p>
<p>同样地，Oracle也广泛地使用着Hash算法，Hash Partitioning就是在数据仓库应用中的一个典型例子。Hash Partitioning的一个最大的优势就是实现partition wise join.</p>
<p>一个要考虑的问题在于hash partitions数目的选择，一个总的原则是它应该是2的乘方，如4,8,16,32,64,128…</p>
<p>另一个要考虑的方面在于硬件的处理能力，对了，就是RAC里面的节点数，还有每个节点CPU Cores的多少。说得再具体一点，就是默认的DOP的大小(默认DOP = 2 * cpu_count * number of nodes in the cluster)。一般而言，把hash partitions的个数设置成默认的DOP是一个推荐的设置值。在这种问题下，CBO一般会找到最好的执行计划，如利用partition-wise join的特性。</p>
<p>下面的执行计划是一个示例，这是一个利用了parition-wise join的例子。这里，DOP的大小等于hash partitions的个数。</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">---------------------------------------------------------------------------------------------------------------------------------</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #993333; font-weight: bold;">SELECT</span> STATEMENT        <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">128</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:02 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>        <span style="color: #66cc66;">|</span>      <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>  PX COORDINATOR         <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>        <span style="color: #66cc66;">|</span>      <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span>   PX SEND QC <span style="color: #66cc66;">&#40;</span>RANDOM<span style="color: #66cc66;">&#41;</span>   <span style="color: #66cc66;">|</span> :TQ10000 <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">128</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:02 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> P<span style="color: #66cc66;">-</span>&amp;gt;S <span style="color: #66cc66;">|</span> QC <span style="color: #66cc66;">&#40;</span>RAND<span style="color: #66cc66;">&#41;</span>  <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    PX PARTITION HASH <span style="color: #993333; font-weight: bold;">ALL</span><span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">128</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:02 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> PCWC <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|*</span>  <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>     HASH <span style="color: #993333; font-weight: bold;">JOIN</span>           <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">128</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:02 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span>      <span style="color: #993333; font-weight: bold;">TABLE</span> ACCESS <span style="color: #993333; font-weight: bold;">FULL</span>  <span style="color: #66cc66;">|</span> FACT_B   <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   488K<span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">12</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">9</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">6</span> <span style="color: #66cc66;">|</span>      <span style="color: #993333; font-weight: bold;">TABLE</span> ACCESS <span style="color: #993333; font-weight: bold;">FULL</span>  <span style="color: #66cc66;">|</span> FACT_A   <span style="color: #66cc66;">|</span>   995K<span style="color: #66cc66;">|</span>  4860K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">112</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">7</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:02 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #808080; font-style: italic;">---------------------------------------------------------------------------------------------------------------------------------</span>
Predicate Information <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">IDENTIFIED</span> <span style="color: #993333; font-weight: bold;">BY</span> operation id<span style="color: #66cc66;">&#41;</span>:
<span style="color: #808080; font-style: italic;">---------------------------------------------------</span>
   <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">-</span> access<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;A&quot;</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;PART_COL1&quot;</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;B&quot;</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;PART_COL1&quot;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>如果hash partitions的个数比DOP还小，可能会出现下面的执行计划:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">-------------------------------------------------------------------------------------------------------------------------------------</span>
<span style="color: #66cc66;">|</span> Id  <span style="color: #66cc66;">|</span> Operation                   <span style="color: #66cc66;">|</span> Name     <span style="color: #66cc66;">|</span> Rows  <span style="color: #66cc66;">|</span> Bytes <span style="color: #66cc66;">|</span> Cost <span style="color: #66cc66;">&#40;</span>%CPU<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> Time     <span style="color: #66cc66;">|</span> Pstart<span style="color: #66cc66;">|</span> Pstop <span style="color: #66cc66;">|</span>    TQ  <span style="color: #66cc66;">|</span>IN<span style="color: #66cc66;">-</span>OUT<span style="color: #66cc66;">|</span> PQ Distrib <span style="color: #66cc66;">|</span>
<span style="color: #808080; font-style: italic;">-------------------------------------------------------------------------------------------------------------------------------------</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #993333; font-weight: bold;">SELECT</span> STATEMENT            <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">64</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>        <span style="color: #66cc66;">|</span>      <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>  PX COORDINATOR             <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>        <span style="color: #66cc66;">|</span>      <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span>   PX SEND QC <span style="color: #66cc66;">&#40;</span>RANDOM<span style="color: #66cc66;">&#41;</span>       <span style="color: #66cc66;">|</span> :TQ10001 <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">64</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> P<span style="color: #66cc66;">-</span>&amp;gt;S <span style="color: #66cc66;">|</span> QC <span style="color: #66cc66;">&#40;</span>RAND<span style="color: #66cc66;">&#41;</span>  <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|*</span>  <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    HASH <span style="color: #993333; font-weight: bold;">JOIN</span>                <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">64</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>     PX RECEIVE              <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   488K<span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">6</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">17</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span>      PX SEND BROADCAST <span style="color: #993333; font-weight: bold;">LOCAL</span><span style="color: #66cc66;">|</span> :TQ10000 <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   488K<span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">6</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">17</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> P<span style="color: #66cc66;">-</span>&amp;gt;P <span style="color: #66cc66;">|</span> BCST <span style="color: #993333; font-weight: bold;">LOCAL</span> <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">6</span> <span style="color: #66cc66;">|</span>       PX BLOCK ITERATOR     <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   488K<span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">6</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">17</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> PCWC <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">7</span> <span style="color: #66cc66;">|</span>        <span style="color: #993333; font-weight: bold;">TABLE</span> ACCESS <span style="color: #993333; font-weight: bold;">FULL</span>    <span style="color: #66cc66;">|</span> FACT_B   <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   488K<span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">6</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">17</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">8</span> <span style="color: #66cc66;">|</span>     PX BLOCK ITERATOR       <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>   995K<span style="color: #66cc66;">|</span>  4860K<span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">56</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> PCWC <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">9</span> <span style="color: #66cc66;">|</span>      <span style="color: #993333; font-weight: bold;">TABLE</span> ACCESS <span style="color: #993333; font-weight: bold;">FULL</span>      <span style="color: #66cc66;">|</span> FACT_A   <span style="color: #66cc66;">|</span>   995K<span style="color: #66cc66;">|</span>  4860K<span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">56</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #808080; font-style: italic;">-------------------------------------------------------------------------------------------------------------------------------------</span>
Predicate Information <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">IDENTIFIED</span> <span style="color: #993333; font-weight: bold;">BY</span> operation id<span style="color: #66cc66;">&#41;</span>:
<span style="color: #808080; font-style: italic;">---------------------------------------------------</span>
   <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">-</span> access<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;A&quot;</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;PART_COL1&quot;</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;B&quot;</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;PART_COL1&quot;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>如果hash partitions的个数比DOP还大，可能会出现下面的执行计划:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">--------------------------------------------------------------------------------------------------------------------------------------</span>
<span style="color: #66cc66;">|</span> Id  <span style="color: #66cc66;">|</span> Operation                    <span style="color: #66cc66;">|</span> Name     <span style="color: #66cc66;">|</span> Rows  <span style="color: #66cc66;">|</span> Bytes <span style="color: #66cc66;">|</span> Cost <span style="color: #66cc66;">&#40;</span>%CPU<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> Time     <span style="color: #66cc66;">|</span> Pstart<span style="color: #66cc66;">|</span> Pstop <span style="color: #66cc66;">|</span>    TQ  <span style="color: #66cc66;">|</span>IN<span style="color: #66cc66;">-</span>OUT<span style="color: #66cc66;">|</span> PQ Distrib <span style="color: #66cc66;">|</span>
<span style="color: #808080; font-style: italic;">--------------------------------------------------------------------------------------------------------------------------------------</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #993333; font-weight: bold;">SELECT</span> STATEMENT             <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">256</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:04 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>        <span style="color: #66cc66;">|</span>      <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>  PX COORDINATOR              <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>        <span style="color: #66cc66;">|</span>      <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">|</span>   PX SEND QC <span style="color: #66cc66;">&#40;</span>RANDOM<span style="color: #66cc66;">&#41;</span>        <span style="color: #66cc66;">|</span> :TQ10001 <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">256</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:04 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> P<span style="color: #66cc66;">-</span>&amp;gt;S <span style="color: #66cc66;">|</span> QC <span style="color: #66cc66;">&#40;</span>RAND<span style="color: #66cc66;">&#41;</span>  <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|*</span>  <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">|</span>    HASH <span style="color: #993333; font-weight: bold;">JOIN</span>                 <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   976K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">256</span>  <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:04 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>     PX BLOCK ITERATOR        <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   488K<span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">23</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> PCWC <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">|</span>      <span style="color: #993333; font-weight: bold;">TABLE</span> ACCESS <span style="color: #993333; font-weight: bold;">FULL</span>       <span style="color: #66cc66;">|</span> FACT_B   <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">99999</span> <span style="color: #66cc66;">|</span>   488K<span style="color: #66cc66;">|</span>    <span style="color: #cc66cc;">23</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:01 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">6</span> <span style="color: #66cc66;">|</span>     BUFFER SORT              <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> PCWC <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">7</span> <span style="color: #66cc66;">|</span>      PX RECEIVE              <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>   995K<span style="color: #66cc66;">|</span>  4860K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">224</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:03 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>01 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">8</span> <span style="color: #66cc66;">|</span>       PX SEND BROADCAST <span style="color: #993333; font-weight: bold;">LOCAL</span><span style="color: #66cc66;">|</span> :TQ10000 <span style="color: #66cc66;">|</span>   995K<span style="color: #66cc66;">|</span>  4860K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">224</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:03 <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>       <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> P<span style="color: #66cc66;">-</span>&amp;gt;P <span style="color: #66cc66;">|</span> BCST <span style="color: #993333; font-weight: bold;">LOCAL</span> <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">9</span> <span style="color: #66cc66;">|</span>        PX BLOCK ITERATOR     <span style="color: #66cc66;">|</span>          <span style="color: #66cc66;">|</span>   995K<span style="color: #66cc66;">|</span>  4860K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">224</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:03 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> PCWC <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">|</span>  <span style="color: #cc66cc;">10</span> <span style="color: #66cc66;">|</span>         <span style="color: #993333; font-weight: bold;">TABLE</span> ACCESS <span style="color: #993333; font-weight: bold;">FULL</span>    <span style="color: #66cc66;">|</span> FACT_A   <span style="color: #66cc66;">|</span>   995K<span style="color: #66cc66;">|</span>  4860K<span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">224</span>   <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">|</span> 00:00:03 <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span>     <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">|</span>  Q1<span style="color: #66cc66;">,</span>00 <span style="color: #66cc66;">|</span> PCWP <span style="color: #66cc66;">|</span>            <span style="color: #66cc66;">|</span>
<span style="color: #808080; font-style: italic;">--------------------------------------------------------------------------------------------------------------------------------------</span>
Predicate Information <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">IDENTIFIED</span> <span style="color: #993333; font-weight: bold;">BY</span> operation id<span style="color: #66cc66;">&#41;</span>:
<span style="color: #808080; font-style: italic;">---------------------------------------------------</span>
   <span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">-</span> access<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;A&quot;</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;PART_COL1&quot;</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;B&quot;</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot;PART_COL1&quot;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>如果hash partitions的个数与默认的DOP一致，那当然可以节省很多时间，如果不是呢，而且要修改Hash Partitions的个数其实不是一件很容易的事情，那就只能通过调整DOP来得到一个好的执行计划了。两种方法：</p>
<ul>
<li>在表一级，通过 alter table parallel &lt;degree&gt;</li>
<li>在SQL一级，通过/*+ parallel (table_name, &lt;degree&gt; */</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.os2ora.com/how-to-decide-the-number-of-hash-partitions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
