<?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; performance</title>
	<atom:link href="http://www.os2ora.com/tag/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.os2ora.com</link>
	<description>专注于现实世界Oracle数据库的高性能，高可扩展性与新一代数据库Exadata架构</description>
	<lastBuildDate>Mon, 19 Sep 2011 09:10:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>OLTP Performance Video &#8211; Concurrent Mid-Tier Connections and Trouble of Parsing</title>
		<link>http://www.os2ora.com/oltp-performance-video-concurrent-mid-tier-connections-and-trouble-of-parsing/</link>
		<comments>http://www.os2ora.com/oltp-performance-video-concurrent-mid-tier-connections-and-trouble-of-parsing/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 08:40:15 +0000</pubDate>
		<dc:creator>Kaya</dc:creator>
				<category><![CDATA[Exadata]]></category>
		<category><![CDATA[数据库性能调优]]></category>
		<category><![CDATA[系统架构]]></category>
		<category><![CDATA[Connection Mid-Tier]]></category>
		<category><![CDATA[OLTP]]></category>
		<category><![CDATA[Parse]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.os2ora.com/oltp-performance-video-concurrent-mid-tier-connections-and-trouble-of-parsing/</guid>
		<description><![CDATA[下一个Demo是关于OLTP性能的。与Retail Demo对应，这个Demo内部的名字叫做Connection Demo。Retail Demo主要展现的是数据仓库的性能，而Connection Demo展现的主要是OLTP的性能。这个Demo首次出现于2010年的OOW，往事不堪回首，那段时间我刚好在Oracle总部，刚好负责这个Demo的开发工作，怀念那段与bug做斗争的日子。]]></description>
			<content:encoded><![CDATA[<p>Kaya 发表于os2ora.com</p>
<p>下一个Oracle Real World Performace Group所录制的Demo视频是关于OLTP性能的。与Retail Demo对应，这个Demo内部的名字叫做Connection Demo。Retail Demo主要展现的是数据仓库的性能，而Connection Demo展现的主要是OLTP的性能。这个Demo首次出现于2010年的OOW，往事不堪回首，那段时间我刚好在Oracle总部负责这个Demo的开发工作，怀念那段与bug做斗争的日子。</p>
<p>这个Demo的功能比较多，录制好的视频主要有两个主题：</p>
<p>1. OLTP Performance &#8211; The Trouble with Parsing<br />
这是关于Oracle 里面的no parse, soft parse 和 hard parse。</p>
<p>这是一个老生常谈的问题，自从有了Oracle之后。</p>
<p>在no parse情况下，情况很理想，响应时间1毫秒，吞吐量30,000.<br />
在soft parse情况下，情况有点糟糕了&#8230;<br />
在hard parse情况下，情况更糟糕了&#8230; 关于shared pool的等待事件…</p>
<p>另一个展示的是不使用长连接而使用短连接有什么后果。究竟频繁地执行logon -&gt; do some stuff -&gt; logoff会导致什么严重的后果？服务器上的SYS% CPU为何会比USER% CPU还高？</p>
<p>还有，EM在这三种情况下的Performance Page会有什么直观的展示？</p>
<p>一切尽在这个Demo中，嗯。</p>
<p><iframe src="http://www.youtube.com/embed/1oddFEyUAjs" frameborder="0" width="420" height="345"></iframe></p>
<p>2. OLTP Performance  &#8211; Concurrent Mid-Tier Connections<br />
这是一个很有趣的Demo.</p>
<p>有多少客户的系统连接着成千上万个数据库连接？有多少个客户把实现成32000个并发连接做为系统的需求进行设计？</p>
<p>过度的连接会导致什么后果？</p>
<p>这个Demo模拟了两个应用服务器对一个数据库服务器的连接。应用会话数为9600个，使用JDBC Connection Pool连接到数据库。</p>
<p>开始时，Connection Pool有2048个连接。这时你会看到一个看起来非常常见的系统。CPU很忙，系统看起来很正常，等待事件看起来很多很常见。如buffer busy waits, enq: TX &#8211; index contention, log buffer space等等。嗯，DBA开始分析这些等待事件，开始调整参数。 过年过节的时间，系统变得更不稳定，DBA们开始提心吊胆渡过每一秒钟。</p>
<p>这个Demo起码回答了几个问题：<br />
如果把Connection 的个数降到1024，会有什么结果？会话的等待时间会不会变得更长？吞吐量会不会下降？<br />
如果把Connection 的个数降到96，又会有什么结果？<br />
还有，EM在这三种情况下的Performance Page会有什么直观的展示？</p>
<p>看了，保证你会很惊讶。</p>
<p><iframe src="http://www.youtube.com/embed/xNDnVOCdvQ0" frameborder="0" width="420" height="345"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.os2ora.com/oltp-performance-video-concurrent-mid-tier-connections-and-trouble-of-parsing/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>connect by的性能分析</title>
		<link>http://www.os2ora.com/connect-by-performance-tunning/</link>
		<comments>http://www.os2ora.com/connect-by-performance-tunning/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 11:52:03 +0000</pubDate>
		<dc:creator>Kaya</dc:creator>
				<category><![CDATA[Oracle SQL 扩展]]></category>
		<category><![CDATA[数据库性能调优]]></category>
		<category><![CDATA[connect by]]></category>
		<category><![CDATA[distinct]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[tree]]></category>

		<guid isPermaLink="false">http://www.os2ora.com/connect-by-performance-tunning/</guid>
		<description><![CDATA[对上一篇文章里提到两条语句 
select distinct begin_date, end_date, begin_date + level -1 day  from test connect by begin_date + level -1 <= end_date order by 1,2,3; 
和 
select one_date 
  from (select start_date + level - 1 one_date 
          from (select min(start_date) start_date, max(end_date) end_date 
                  from test) test 
        connect by start_date + level - 1 < = end_date ) all_date, 
       test 
where one_date between start_date and end_date; 

它们都实现相同的功能，即: 当一个表里面有两个列，分别为begin_date和end_date时，如何针对这个表的每一行，用SQL返回begin_date和end_date之间的所有连续日期。 

这两条语句的可扩展性问题是下面是讨论的重点......]]></description>
			<content:encoded><![CDATA[<p>Kaya 发表于 <a href="http://www.os2ora.com">os2ora.com</a></p>
<p>对上一篇文章里提到两条语句<br />
select distinct begin_date, end_date, begin_date + level -1 day  from test connect by begin_date + level -1 &lt;= end_date order by 1,2,3;<br />
和<br />
select one_date<br />
  from (select start_date + level &#8211; 1 one_date<br />
          from (select min(start_date) start_date, max(end_date) end_date<br />
                  from test) test<br />
        connect by start_date + level &#8211; 1 &lt; = end_date ) all_date,<br />
       test<br />
where one_date between start_date and end_date;</p>
<p>它们都实现相同的功能，即: 当一个表里面有两个列，分别为begin_date和end_date时，如何针对这个表的每一行，用SQL返回begin_date和end_date之间的所有连续日期。</p>
<p>首先，我们关注第一条语句在没有distinct的情况下返回的行数。</p>
<p>会使问题简单化，假设对于表里的每行数据，end_date &#8211; begin_date + 1 的值都是一样的，设为 n 。假设test里总共有 m 行(m&gt;1)。<br />
那么，这时返回的行数是 m * ( power(m,n) &#8211; 1 )/( m &#8211; 1 ) 。<br />
(<br />
这是一个等比数列，公式为<br />
1 +  m +  power(m,2) + &#8230;.  power(m,n-1) = ( 1 &#8211; power (m,n)) / (1 &#8211; m),<br />
)<br />
这些行可以用一系列的树加以形象的表示，如下所示：</p>
<p><a href="http://www.os2ora.com/wp-content/uploads/2009/03/connectby.jpg"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="connectby" src="http://www.os2ora.com/wp-content/uploads/2009/03/connectby-thumb.jpg" border="0" alt="connectby" width="627" height="181" /></a></p>
<p>当 n 和 m 很大时，会使结果集变得非常之大，为 power(m,n).</p>
<p>因此，下面语句在数据量变大的情况下，性能将急剧下降!<br />
select distinct begin_date, end_date, begin_date + level -1 day  from test connect by begin_date + level -1 &lt;= end_date order by 1,2,3;</p>
<p>对于语句2，我们关注以下子查询所返回的行数:<br />
select start_date + level &#8211; 1 one_date<br />
          from (select min(start_date) start_date, max(end_date) end_date<br />
                  from test) test<br />
        connect by start_date + level &#8211; 1 &lt; = end_date</p>
<p>这时，表实质上只有1行时，存贮的是原来表的最大值和最小值。也就是说，这时 m = 1 。</p>
<p>当m=1时，情况变得不同了。这时，返回的行数刚好就是 n 。<br />
如果以树加以表示的话，这时上面的图形已经退化成一棵只有一个支干的树。</p>
<p><a href="http://www.os2ora.com/wp-content/uploads/2009/03/image4.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.os2ora.com/wp-content/uploads/2009/03/image-thumb4.png" border="0" alt="image" width="251" height="184" /></a></p>
<p>因此，当原来的查询m 和 n都很大时，返回的行数为 将为n。</p>
<p>从上面的表述可清晰地看出，语句2在大数据量的情形下将能体现出良好的性能。</p>
<p>从另一方面看，出现distinct的地方，或许就是性能调整应该关注的地方了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.os2ora.com/connect-by-performance-tunning/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

