<?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>中文 &#187; robinson1988</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/robinson1988/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Sat, 26 May 2012 06:34:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>如何设置最佳的并行度</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/11/30/400006438/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/11/30/400006438/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 08:13:41 +0000</pubDate>
		<dc:creator>robinson1988</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[并行计算]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/11/30/400006438/</guid>
		<description><![CDATA[今天监控 项目上的 日常JOB 发现有人用 PARALLEL 31 去delete table DELETE /*+ PARALLEL(di, 31) */ FROM DICFR_ORDR_CUT_FCT DI WHERE DI.TIME_PERD_START_DATE = :B1 AND DI.SRCE_SYS_ID = :B5 AND DI.DSTBR_ID = :B4 AND DI.FACT_TYPE_CODE = :B3 AND DI.REGN_ID = :B2 这令俺 大吃一惊啊，谁这么猛 搞31的并行度(infosys 公司的那帮阿三.....就他妈一群SB) 如果设置31的并行度，那么一共要花32个进程，31个影子进程和一个main 进程。 SQL&#62; show parameter cpu NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ cpu_count integer 8 [...]]]></description>
			<content:encoded><![CDATA[<p>今天监控 项目上的 日常JOB</p>
<p>发现有人用 PARALLEL 31 去delete table</p>
<p>DELETE /*+ PARALLEL(di, 31) */ FROM DICFR_ORDR_CUT_FCT DI WHERE DI.TIME_PERD_START_DATE = :B1 AND DI.SRCE_SYS_ID = :B5 AND DI.DSTBR_ID = :B4 AND DI.FACT_TYPE_CODE = :B3 AND DI.REGN_ID = :B2</p>
<p>这令俺 大吃一惊啊，谁这么猛 搞31的并行度(infosys 公司的那帮阿三.....就他妈一群SB)</p>
<p>如果设置31的并行度，那么一共要花32个进程，31个影子进程和一个main 进程。</p>
<p>SQL&gt; show parameter cpu</p>
<p>NAME TYPE VALUE<br />
------------------------------------ --------------------------------- ------------------------------<br />
cpu_count integer 8<br />
parallel_threads_per_cpu integer 2</p>
<p>cpu_count=8, parallel_threads_per_cpu=2</p>
<p>关于 parallel_threads_per_cpu 参数的解释:</p>
<p>The parameter describes the number of parallel execution processes or threads that a CPU can handle during parallel execution.</p>
<p>这个参数也就是说一个CPU 能处理多少个进程当 parallel execution的时候</p>
<p>也就是说我这个机器 的degree 最好设置 parallel 15 , 这样 能发挥CPU 最大能力</p>
<p>下面是关于PARALLEL 度设置的性能比较(比较粗糙 ，不过大概能 看出最佳parallel)</p>
<p>SQL&gt; SELECT /*+PARALLEL(A,3)*/ COUNT(*) FROM ADWGU_DICFR.DICFR_INVEN_FCT A;</p>
<p>COUNT(*)<br />
----------<br />
127839357</p>
<p>Elapsed: 00:07:38.61<br />
SQL&gt; SELECT /*+PARALLEL(A,8)*/ COUNT(*) FROM ADWGU_DICFR.DICFR_INVEN_FCT A;</p>
<p>COUNT(*)<br />
----------<br />
127839357</p>
<p>Elapsed: 00:03:50.69<br />
SQL&gt; SELECT /*+PARALLEL(A,15)*/ COUNT(*) FROM ADWGU_DICFR.DICFR_INVEN_FCT A;</p>
<p>COUNT(*)<br />
----------<br />
127839357</p>
<p>Elapsed: 00:03:13.00<br />
SQL&gt; SELECT /*+PARALLEL(A,31)*/ COUNT(*) FROM ADWGU_DICFR.DICFR_INVEN_FCT A;</p>
<p>COUNT(*)<br />
----------<br />
127839357</p>
<p>Elapsed: 00:04:06.90<br />
由此可见 俺的说法是正确的。</p>
<p>结论：parallel 设置为 cpu_count*parallel_threads_per_cpu-1能获得最好的性能。</p>
<p>另外注意，如果有order by 操作 那么并行度=cpu_count*parallel_threads_per_cpu/2-1</p>
<p>注意：如果session数太多，cpu 使用率 过高，不要设置 这么高的并行度，一般是CPU使用率小于30%的时候才使用并行提高处理速度。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/11/30/400006438/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

