<?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>AnySQL.net &#187; Statistics</title>
	<atom:link href="http://www.anysql.net/tag/statistics/feed" rel="self" type="application/rss+xml" />
	<link>http://www.anysql.net</link>
	<description>SQLULDR2, DataCopy, DataSync, WebChart, OraMon, AUL/MyDUL, 性能优化及容量分析</description>
	<lastBuildDate>Wed, 14 Jul 2010 09:27:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Oracle CBO认为Cost为0</title>
		<link>http://www.anysql.net/oracle/oracle_zero_cost_plan.html</link>
		<comments>http://www.anysql.net/oracle/oracle_zero_cost_plan.html#comments</comments>
		<pubDate>Thu, 28 Feb 2008 21:38:54 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Partition]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/oracle-cbo%e8%ae%a4%e4%b8%bacost%e4%b8%ba0.html</guid>
		<description><![CDATA[&#160; &#160; 在一个分区表上去执行一个SQL时(在Where条件中用了分区列等于的条件, 分区列为主键索引的最后一列), 发现用错了执行计划, Oracle居然认为某个SQL的执行计划的成本为0, 实际上是肯定没有本为0的执行计划的, 因此是明显的不合理的现象. SQLPLAN&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;COST CARD KBYTE PS PE &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;- &#8212;- &#8212;&#8211; &#8212; &#8211; &#160;&#160;0&#160;&#160;&#160;&#160; SELECT STATEMENT Optimizer=RULE&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160;1&#160;&#160;&#160;&#160; 0 &#160;&#160;1&#160;&#160; 0&#160;&#160; SORT (GROUP BY)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1&#160;&#160;&#160;&#160; 0 &#160;&#160;2&#160;&#160; 1&#160;&#160;&#160;&#160; PARTITION RANGE (SINGLE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0&#160;&#160;&#160;&#160;1&#160;&#160;&#160;&#160; 0 3&#160;&#160;3 &#160;&#160;3&#160;&#160; 2&#160;&#160;&#160;&#160;&#160;&#160; TABLE ACCESS (BY LOCAL INDEX ROWID&#160;&#160;&#160;&#160;0&#160;&#160;&#160;&#160;1&#160;&#160;&#160;&#160; 0 3&#160;&#160;3 &#160;&#160;4&#160;&#160; 3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; INDEX (SKIP SCAN) OF TEST_TAB_PK&#160;&#160;&#160;&#160;0&#160;&#160;&#160;&#160;1&#160;&#160;&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 在一个分区表上去执行一个SQL时(在Where条件中用了分区列等于的条件, 分区列为主键索引的最后一列), 发现用错了执行计划, Oracle居然认为某个SQL的执行计划的成本为0, 实际上是肯定没有本为0的执行计划的, 因此是明显的不合理的现象. </p>
<blockquote class="prefont"><p>
SQLPLAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COST CARD KBYTE PS PE<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;- &#8212;- &#8212;&#8211; &#8212; &#8211;<br />
&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; SELECT STATEMENT Optimizer=RULE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
&nbsp;&nbsp;1&nbsp;&nbsp; 0&nbsp;&nbsp; SORT (GROUP BY)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
&nbsp;&nbsp;2&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp; PARTITION RANGE (SINGLE)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp; 0 3&nbsp;&nbsp;3<br />
&nbsp;&nbsp;3&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TABLE ACCESS (BY LOCAL INDEX ROWID&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp; 0 3&nbsp;&nbsp;3<br />
&nbsp;&nbsp;4&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEX (SKIP SCAN) OF TEST_TAB_PK&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;3
</p></blockquote>
<p>&nbsp; &nbsp; 产生的原因是因为分区的统计信息是过时的, 执行分析时这个分区还没有任何记录, 就产生了这个问题. </p>
<blockquote class="prefont"><p>
ASQL&gt; SELECT PARTITION_NAME, BLEVEL,LEAF_BLOCKS,<br />
&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISTINCT_KEYS,NUM_ROWS <br />
&nbsp;&nbsp;&nbsp;&nbsp;3 FROM DBA_IND_PARTITIONS <br />
&nbsp;&nbsp;&nbsp;&nbsp;4 WHERE INDEX_NAME=&#8217;TEST_TAB_PK&#8217;;</p>
<p>PARTITION_NAME&nbsp;&nbsp; BLEVEL LEAF_BLOCKS DISTINCT_KEYS NUM_ROWS<br />
&#8212;&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8211;<br />
TEST_TAB_PK_P06&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />
TEST_TAB_PK_P07&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;364320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;73835520 73835520<br />
TEST_TAB_PK_P08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />
TEST_TAB_PK_P09&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />
TEST_TAB_PK_P10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />
TEST_TAB_PK_PMAX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0
</p></blockquote>
<p>&nbsp; &nbsp; 但很显然Oracle这样算是不合理的, 谁能天天去分析表呢, 又有谁敢呢? 最好是当统计值为0时, 当作默认值来处理, 在另一个没有分析过的数据库上就是好的. 现在最好的做法, 就是分析后, 将空的分区上的统计信息删除, 当然可以用程序来做到这一点. </p>
<p>&nbsp; &nbsp; 在7&#215;24小时的OLTP系统中, 分区是要用的, 出了问题是严重的, 你有什么高见? </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/02/05 -- <a href="http://www.anysql.net/dba/change_export_tablespace.html" title="导出时如何统一表空间?">导出时如何统一表空间?</a> (2)</li><li>2007/05/14 -- <a href="http://www.anysql.net/dba/index_compute_statistics.html" title="由compute statistics选项引起的性能问题">由compute statistics选项引起的性能问题</a> (3)</li><li>2007/01/31 -- <a href="http://www.anysql.net/oracle/oracleglobal_partition_index.html" title="你用过Oracle的Global Partition Index吗?">你用过Oracle的Global Partition Index吗?</a> (12)</li><li>2008/06/23 -- <a href="http://www.anysql.net/dba/apache_tomcat.html" title="根据表名搜索SQL语句">根据表名搜索SQL语句</a> (0)</li><li>2008/05/11 -- <a href="http://www.anysql.net/oracle/my_network_channels.html" title="一周遇到两个Oracle Bug">一周遇到两个Oracle Bug</a> (5)</li><li>2008/03/20 -- <a href="http://www.anysql.net/aulmydul/aul_recover_source_code.html" title="AUL恢复Oracle索引结构?">AUL恢复Oracle索引结构?</a> (0)</li><li>2007/12/04 -- <a href="http://www.anysql.net/oracle/index_on_timestamp.html" title="TIMESTAMP类型上的索引">TIMESTAMP类型上的索引</a> (0)</li><li>2007/09/06 -- <a href="http://www.anysql.net/oracle/context_index_stoplist.html" title="用Stop List来缩小Oracle全文索引的大小">用Stop List来缩小Oracle全文索引的大小</a> (4)</li><li>2007/08/21 -- <a href="http://www.anysql.net/oracle/indexed_fixed_column.html" title="如何获得X$表上的特殊索引信息?">如何获得X$表上的特殊索引信息?</a> (0)</li><li>2007/08/12 -- <a href="http://www.anysql.net/oracle/use_concat_not_working.html" title="USE_CONCAT对X$表有时并不工作">USE_CONCAT对X$表有时并不工作</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/oracle/oracle_zero_cost_plan.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>由compute statistics选项引起的性能问题</title>
		<link>http://www.anysql.net/dba/index_compute_statistics.html</link>
		<comments>http://www.anysql.net/dba/index_compute_statistics.html#comments</comments>
		<pubDate>Tue, 15 May 2007 03:05:02 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/%e7%94%b1compute-statistics%e9%80%89%e9%a1%b9%e5%bc%95%e8%b5%b7%e7%9a%84%e6%80%a7%e8%83%bd%e9%97%ae%e9%a2%98.html</guid>
		<description><![CDATA[&#160; &#160; 在数据库中有一个表, 在其上面有一个索引, 现在的情况是没有分析数据的. 如下所示: SQL&#62; SELECT TABLE_NAME, NUM_ROWS, LAST_ANALYZED &#160;&#160;2&#160;&#160;&#160;&#160;FROM USER_TABLES WHERE TABLE_NAME=&#8217;POS_SELL&#8217;; TABLE_NAME&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; NUM_ROWS LAST_ANAL &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212; POS_SELL SQL&#62; SELECT INDEX_NAME, NUM_ROWS, LAST_ANALYZED &#160;&#160;2&#160;&#160;&#160;&#160;FROM USER_INDEXES WHERE INDEX_NAME=&#8217;POS_SELL_IX1&#8242;; INDEX_NAME&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; NUM_ROWS LAST_ANAL &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212; POS_SELL_IX1 &#160; &#160; 接着需要再创建一个索引, 在创建时, 我加上了计算统计信息的选项, 如下所示: SQL&#62; CREATE INDEX POS_SELL_IX2 ON POS_SELL (USERCODE) &#160;&#160;2&#160;&#160;&#160;&#160;COMPUTE STATISTICS; Index created. [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 在数据库中有一个表, 在其上面有一个索引, 现在的情况是没有分析数据的. 如下所示: </p>
<blockquote class="prefont"><p>
SQL&gt; SELECT TABLE_NAME, NUM_ROWS, LAST_ANALYZED<br />
&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;FROM USER_TABLES WHERE TABLE_NAME=&#8217;POS_SELL&#8217;;</p>
<p>TABLE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUM_ROWS LAST_ANAL<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;<br />
POS_SELL</p>
<p>SQL&gt; SELECT INDEX_NAME, NUM_ROWS, LAST_ANALYZED<br />
&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;FROM USER_INDEXES WHERE INDEX_NAME=&#8217;POS_SELL_IX1&#8242;;</p>
<p>INDEX_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUM_ROWS LAST_ANAL<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;<br />
POS_SELL_IX1
</p></blockquote>
<p>&nbsp; &nbsp; 接着需要再创建一个索引, 在创建时, 我加上了计算统计信息的选项, 如下所示: </p>
<blockquote class="prefont"><p>
SQL&gt; CREATE INDEX POS_SELL_IX2 ON POS_SELL (USERCODE)<br />
&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;COMPUTE STATISTICS;</p>
<p>Index created.
</p></blockquote>
<p>&nbsp; &nbsp; 现在我们再来查一下, 表及索引的分析情况, 发现在10g中, 只有新创建的索引有统计数据: </p>
<blockquote class="prefont"><p>
SQL&gt; SELECT TABLE_NAME, NUM_ROWS, LAST_ANALYZED<br />
&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;FROM USER_TABLES WHERE TABLE_NAME=&#8217;POS_SELL&#8217;;</p>
<p>TABLE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUM_ROWS LAST_ANAL<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;<br />
POS_SELL</p>
<p>SQL&gt; SELECT INDEX_NAME, NUM_ROWS, LAST_ANALYZED<br />
&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM USER_INDEXES WHERE INDEX_NAME=&#8217;POS_SELL_IX1&#8242;;</p>
<p>INDEX_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUM_ROWS LAST_ANAL<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;<br />
POS_SELL_IX1</p>
<p>SQL&gt; SELECT INDEX_NAME, NUM_ROWS, LAST_ANALYZED<br />
&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM USER_INDEXES WHERE INDEX_NAME=&#8217;POS_SELL_IX2&#8242;;</p>
<p>INDEX_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUM_ROWS LAST_ANAL<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;<br />
POS_SELL_IX2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24398 14-MAY-07
</p></blockquote>
<p>&nbsp; &nbsp; 但今天在9i中创建索引时, 发现表被分析了, 但另一个索引则没有分析. 由于表的统计信息变了, 引起了一些SQL选择了错误的执行计划, 导致了服务器的性能问题. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2008/02/28 -- <a href="http://www.anysql.net/oracle/oracle_zero_cost_plan.html" title="Oracle CBO认为Cost为0">Oracle CBO认为Cost为0</a> (2)</li><li>2009/02/05 -- <a href="http://www.anysql.net/dba/change_export_tablespace.html" title="导出时如何统一表空间?">导出时如何统一表空间?</a> (2)</li><li>2008/06/23 -- <a href="http://www.anysql.net/dba/apache_tomcat.html" title="根据表名搜索SQL语句">根据表名搜索SQL语句</a> (0)</li><li>2008/05/11 -- <a href="http://www.anysql.net/oracle/my_network_channels.html" title="一周遇到两个Oracle Bug">一周遇到两个Oracle Bug</a> (5)</li><li>2008/03/20 -- <a href="http://www.anysql.net/aulmydul/aul_recover_source_code.html" title="AUL恢复Oracle索引结构?">AUL恢复Oracle索引结构?</a> (0)</li><li>2007/12/04 -- <a href="http://www.anysql.net/oracle/index_on_timestamp.html" title="TIMESTAMP类型上的索引">TIMESTAMP类型上的索引</a> (0)</li><li>2007/09/06 -- <a href="http://www.anysql.net/oracle/context_index_stoplist.html" title="用Stop List来缩小Oracle全文索引的大小">用Stop List来缩小Oracle全文索引的大小</a> (4)</li><li>2007/08/21 -- <a href="http://www.anysql.net/oracle/indexed_fixed_column.html" title="如何获得X$表上的特殊索引信息?">如何获得X$表上的特殊索引信息?</a> (0)</li><li>2007/08/12 -- <a href="http://www.anysql.net/oracle/use_concat_not_working.html" title="USE_CONCAT对X$表有时并不工作">USE_CONCAT对X$表有时并不工作</a> (0)</li><li>2007/08/02 -- <a href="http://www.anysql.net/oracle/oracle_kernel_table_index.html" title="如何以较好的性能访问Oracle内核表?">如何以较好的性能访问Oracle内核表?</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/dba/index_compute_statistics.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>学习MySQL, 需要大家帮一点忙之一</title>
		<link>http://www.anysql.net/mysql/log_mysql_statistics.html</link>
		<comments>http://www.anysql.net/mysql/log_mysql_statistics.html#comments</comments>
		<pubDate>Sun, 08 Apr 2007 06:12:14 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Log]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/%e5%ad%a6%e4%b9%a0mysql-%e9%9c%80%e8%a6%81%e5%a4%a7%e5%ae%b6%e5%b8%ae%e4%b8%80%e7%82%b9%e5%bf%99%e4%b9%8b%e4%b8%80.html</guid>
		<description><![CDATA[&#160; &#160; 开始学习MySQL已经有一周多时间了, 在学习的过程中, 没有一个有一定负荷的数据库在面前, 是很抽象的, 比如我最近正在研究的MySQL中的状态变量(Status Variables), 就需要从真实的库中去取一些数据出来, 以加深一下这些状态变量的印象. &#160; &#160; 为此我写了一小段Perl的代码(下载), 用来每隔十秒种输出一些我认为比较重要的状态变量的变化值, 不知道有谁能帮我去运行一下这个角本, 返回一二百行记录给我? 我在这儿先说声谢谢了. &#160; &#160; 这个小工具中只是十秒钟执行一下&#8221;SHOW GLOBAL STATUS&#8220;命令, 除此之外不运行任何SQL语句, 因此不会引起什么问题, 可以放心大胆地运行. 现在输出的结构是直接打印到屏幕的, 你可以将输出重定向到一个文件, 要退出程序的运行, 请按Control+C或者向程序发送一个INT信号(kill -INT pid). 程序以MySQL的root用户本地连接, 在程序中没有指定口令, 因为我假定root用户只能本地登录, 并且不需要密码. &#160; &#160; 对于这个程序, 我还会改进的, 如果觉得有用, 欢迎使用. Relative Posts:2007/04/11 -- MySQL中的LogMiner工具 &#8212; mysqlbinlog (2)2007/04/10 -- MySQL的binlog, InnoDB的日志和Oracle的日志 (4)2007/04/06 -- MySQL中我认为比重要的一些Status变量 (1)2007/04/06 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 开始学习MySQL已经有一周多时间了, 在学习的过程中, 没有一个有一定负荷的数据库在面前, 是很抽象的, 比如我最近正在研究的MySQL中的状态变量(Status Variables), 就需要从真实的库中去取一些数据出来, 以加深一下这些状态变量的印象. </p>
<p>&nbsp; &nbsp; 为此我写了一小段Perl的代码(<a href="http://www.anysql.net/software/mysqllog.zip">下载</a>), 用来每隔十秒种输出一些我认为比较重要的状态变量的变化值, 不知道有谁能帮我去运行一下这个角本, 返回一二百行记录给我? 我在这儿先说声谢谢了. </p>
<p>&nbsp; &nbsp; 这个小工具中只是十秒钟执行一下&#8221;<b>SHOW GLOBAL STATUS</b>&#8220;命令, 除此之外不运行任何SQL语句, 因此不会引起什么问题, 可以放心大胆地运行. 现在输出的结构是直接打印到屏幕的, 你可以将输出重定向到一个文件, 要退出程序的运行, 请按Control+C或者向程序发送一个INT信号(kill -INT pid). 程序以MySQL的root用户本地连接, 在程序中没有指定口令, 因为我假定root用户只能本地登录, 并且不需要密码.</p>
<p>&nbsp; &nbsp; 对于这个程序, 我还会改进的, 如果觉得有用, 欢迎使用. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2007/04/11 -- <a href="http://www.anysql.net/mysql/mysql_binlog_miner.html" title="MySQL中的LogMiner工具 &#8212; mysqlbinlog">MySQL中的LogMiner工具 &#8212; mysqlbinlog</a> (2)</li><li>2007/04/10 -- <a href="http://www.anysql.net/mysql/mysql_binlog_concept.html" title="MySQL的binlog, InnoDB的日志和Oracle的日志">MySQL的binlog, InnoDB的日志和Oracle的日志</a> (4)</li><li>2007/04/06 -- <a href="http://www.anysql.net/mysql/important_status_variables.html" title="MySQL中我认为比重要的一些Status变量">MySQL中我认为比重要的一些Status变量</a> (1)</li><li>2007/04/06 -- <a href="http://www.anysql.net/mysql/mysql_statistics_view.html" title="V$SYSSTAT, V$MYSTAT及V$SESSION">V$SYSSTAT, V$MYSTAT及V$SESSION</a> (2)</li><li>2010/02/26 -- <a href="http://www.anysql.net/tools/webchart-dbconn-config2.html" title="WebChart的DB连接配置2">WebChart的DB连接配置2</a> (0)</li><li>2010/02/20 -- <a href="http://www.anysql.net/tools/webchart-multidb-support.html" title="定义不同数据源的SQL">定义不同数据源的SQL</a> (4)</li><li>2010/01/26 -- <a href="http://www.anysql.net/tools/webchart-logical-dbaccess2.html" title="逻辑连接层与物理连接层(2)">逻辑连接层与物理连接层(2)</a> (1)</li><li>2010/01/05 -- <a href="http://www.anysql.net/tools/webchart-forall-loop.html" title="DataReport中的FORALL循环">DataReport中的FORALL循环</a> (0)</li><li>2009/12/25 -- <a href="http://www.anysql.net/tools/sqluldr2-customized-escape-chars.html" title="SQLULDR2的自定义转义符处理">SQLULDR2的自定义转义符处理</a> (2)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/mysql/log_mysql_statistics.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MySQL中我认为比重要的一些Status变量</title>
		<link>http://www.anysql.net/mysql/important_status_variables.html</link>
		<comments>http://www.anysql.net/mysql/important_status_variables.html#comments</comments>
		<pubDate>Fri, 06 Apr 2007 19:30:05 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Statistics]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/mysql%e4%b8%ad%e6%88%91%e8%ae%a4%e4%b8%ba%e6%af%94%e9%87%8d%e8%a6%81%e7%9a%84%e4%b8%80%e4%ba%9bstatus%e5%8f%98%e9%87%8f.html</guid>
		<description><![CDATA[1, Bytes_sent &#160; &#160; 累计值, 向客户端发送的字节数 2, Binlog_cache_disk_use &#160; &#160; 当前值, Binlog中(因为Binlog_cache_size不够大)用了临时文件的事务数, 如果不用Binlog则没有什么事情. 3, Connections &#160; &#160; 累计值, 向MySQL发出连接的数量, 成功和失败的总数. 4, Created_tmp_disk_tables &#160; &#160; 累计值?, MySQL中创建的在磁盘上的临时表的总数. 5, Flush_commands &#160; &#160; 累计值, Flush命令执行的次数 6, Handler_commit &#160; &#160; 累计值, 处理Commit的次数 7, Handler_rollback &#160; &#160; 累计值, 处理Rollback的次数 8, Max_used_connections &#160; &#160; 当前值, MySQL起动以来最大的连接数 9, Opened_tables &#160; &#160; 当前值, [...]]]></description>
			<content:encoded><![CDATA[<p>1, Bytes_sent</p>
<div>&nbsp; &nbsp; 累计值, 向客户端发送的字节数</div>
</p>
<p>2, Binlog_cache_disk_use</p>
<div>&nbsp; &nbsp; 当前值, Binlog中(因为Binlog_cache_size不够大)用了临时文件的事务数, 如果不用Binlog则没有什么事情.</div>
</p>
<p>3, Connections</p>
<div>&nbsp; &nbsp; 累计值, 向MySQL发出连接的数量, 成功和失败的总数.</div>
</p>
<p>4, Created_tmp_disk_tables</p>
<div>&nbsp; &nbsp; <strong>累计值?</strong>, MySQL中创建的在磁盘上的临时表的总数.</div>
</p>
<p>5, Flush_commands</p>
<div>&nbsp; &nbsp; 累计值, Flush命令执行的次数</div>
</p>
<p>6, Handler_commit</p>
<div>&nbsp; &nbsp; 累计值, 处理Commit的次数</div>
</p>
<p>7, Handler_rollback</p>
<div>&nbsp; &nbsp; 累计值, 处理Rollback的次数</div>
</p>
<p>8, Max_used_connections</p>
<div>&nbsp; &nbsp; 当前值, MySQL起动以来最大的连接数</div>
</p>
<p>9, Opened_tables</p>
<div>&nbsp; &nbsp; 当前值, 已经被打开的表的数目</div>
</p>
<p>10, Questions</p>
<div>&nbsp; &nbsp; 累计值, 客户端向服务器端发送的SQL的数目</div>
</p>
<p>11, Select_scan</p>
<div>&nbsp; &nbsp; 累计值, 进行全表扫描的数次</div>
</p>
<p>12, Slow_queries</p>
<div>&nbsp; &nbsp; 累计值, 被标记为较慢的查询数量, 执行时间大于long_query_time的设定</div>
</p>
<p>13, Table_locks_waited</p>
<div>&nbsp; &nbsp; 累计值, 请求表锁, 不能立马获得的次数</div>
</p>
<p>14, Threads_created</p>
<div>&nbsp; &nbsp;  累计值, MySQL总共打开的进程/线程数, 可以理解为当前的会话数</div>
</p>
<p>15, Threads_running</p>
<div>&nbsp; &nbsp;  当前值, 当前活动的进程/线程数</div></p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2007/04/12 -- <a href="http://www.anysql.net/mysql/mysql_bind_query_cache.html" title="MySQL的绑定(Bind)变量和Query Cache">MySQL的绑定(Bind)变量和Query Cache</a> (2)</li><li>2007/04/10 -- <a href="http://www.anysql.net/mysql/mysql_binlog_concept.html" title="MySQL的binlog, InnoDB的日志和Oracle的日志">MySQL的binlog, InnoDB的日志和Oracle的日志</a> (4)</li><li>2007/04/07 -- <a href="http://www.anysql.net/mysql/log_mysql_statistics.html" title="学习MySQL, 需要大家帮一点忙之一">学习MySQL, 需要大家帮一点忙之一</a> (4)</li><li>2007/04/06 -- <a href="http://www.anysql.net/mysql/mysql_statistics_view.html" title="V$SYSSTAT, V$MYSTAT及V$SESSION">V$SYSSTAT, V$MYSTAT及V$SESSION</a> (2)</li><li>2007/04/05 -- <a href="http://www.anysql.net/mysql/access_type_rank.html" title="MySQL中的RBO特性, 数据访问方法的排名">MySQL中的RBO特性, 数据访问方法的排名</a> (4)</li><li>2007/04/03 -- <a href="http://www.anysql.net/mysql/innodb_tuning_params.html" title="InnoDB存贮引挚的一些重要设置选项">InnoDB存贮引挚的一些重要设置选项</a> (2)</li><li>2010/07/14 -- <a href="http://www.anysql.net/dba/get-aix-hba-iostat.html" title="AIX下获得HBA卡的IO流量信息">AIX下获得HBA卡的IO流量信息</a> (0)</li><li>2010/06/18 -- <a href="http://www.anysql.net/dba/get-linux-iostat.html" title="Linux下获取IO压力数据">Linux下获取IO压力数据</a> (4)</li><li>2010/02/26 -- <a href="http://www.anysql.net/tools/webchart-dbconn-config2.html" title="WebChart的DB连接配置2">WebChart的DB连接配置2</a> (0)</li><li>2010/02/20 -- <a href="http://www.anysql.net/tools/webchart-multidb-support.html" title="定义不同数据源的SQL">定义不同数据源的SQL</a> (4)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/mysql/important_status_variables.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>V$SYSSTAT, V$MYSTAT及V$SESSION</title>
		<link>http://www.anysql.net/mysql/mysql_statistics_view.html</link>
		<comments>http://www.anysql.net/mysql/mysql_statistics_view.html#comments</comments>
		<pubDate>Fri, 06 Apr 2007 16:07:04 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Statistics]]></category>
		<category><![CDATA[View]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/vsysstat-vmystat%e5%8f%8avsession.html</guid>
		<description><![CDATA[&#160; &#160; 在Oracle中我们有上面三个视图, 在进行性能调整时可以提供很有用的信息, 发挥了比较大的作用. 本站的小工具OTop就是建立在V$SYSSTAT和V$SESSTAT的基础上的. 在MySQL中也存在类似的命令: &#160; &#160; 1, V$SYSSTAT 对应的命令为SHOW GLOBAL STATUS, 输出两列, 第一列为Statistics名称, 第二列为Statistics的值, 我现在玩的是5.0.37版本, 总共有248个统计值. 对这些统计值的简单介绍在手册或官方网站上可以找到, 我现在还没有仔细地阅读. 在MySQL中这些SHOW命令也是SQL, 和Oracle中的SELECT一样返回一个结果集, 并不一定得写SELECT语句来查系统表. &#160; &#160; 2, V$MYSTAT 对应的命令为SHOW SESSION STATUS, 输出结果和前面相同. 我没有找到什么命令来输出象Oracle中V$SESSTAT那样的结果, 来查询另外一个会话的统计信息. &#160; &#160; 3, V$SESSION 对应的命令为SHOW PROCESSLIST, 但输出的信息还不够详细, 因为在MySQL中没有Shared Pool一说, 所以这里面的输出中找不到这个会话正在执行的SQL语句, 只有一个正在执行的动作的类型, 详细的解释可以在手册中找到. 看来Oracle DBA来学MySQL时会感觉很不爽. &#160; &#160; 要成为MySQL的DBA, 首先要明白这一些, 以充充高手的门面. Relative Posts:2007/04/07 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 在Oracle中我们有上面三个视图, 在进行性能调整时可以提供很有用的信息, 发挥了比较大的作用. 本站的小工具<a href="http://www.anysql.net/otop.html">OTop</a>就是建立在V$SYSSTAT和V$SESSTAT的基础上的. 在MySQL中也存在类似的命令: </p>
<p>&nbsp; &nbsp; 1, V$SYSSTAT</p>
<blockquote>
<p>对应的命令为<b>SHOW GLOBAL STATUS</b>, 输出两列, 第一列为Statistics名称, 第二列为Statistics的值, 我现在<strong>玩</strong>的是5.0.37版本, 总共有248个统计值. 对这些统计值的简单介绍在手册或官方网站上可以找到, 我现在还没有仔细地阅读. 在MySQL中这些SHOW命令也是SQL, 和Oracle中的SELECT一样返回一个结果集, 并不一定得写SELECT语句来查系统表.</p>
</blockquote>
<p>&nbsp; &nbsp; 2, V$MYSTAT</p>
<blockquote>
<p>对应的命令为<b>SHOW SESSION STATUS</b>, 输出结果和前面相同. 我没有找到什么命令来输出象Oracle中V$SESSTAT那样的结果, 来查询另外一个会话的统计信息.</p>
</blockquote>
<p>&nbsp; &nbsp; 3, V$SESSION</p>
<blockquote>
<p>对应的命令为<b>SHOW PROCESSLIST</b>, 但输出的信息还不够详细, 因为在MySQL中没有Shared Pool一说, 所以这里面的输出中找不到这个会话正在执行的SQL语句, 只有一个正在执行的动作的类型, 详细的解释可以在手册中找到. 看来Oracle DBA来学MySQL时会感觉很不爽.</p>
</blockquote>
<p>&nbsp; &nbsp; 要成为MySQL的DBA, 首先要明白这一些, 以充充高手的门面. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2007/04/07 -- <a href="http://www.anysql.net/mysql/log_mysql_statistics.html" title="学习MySQL, 需要大家帮一点忙之一">学习MySQL, 需要大家帮一点忙之一</a> (4)</li><li>2007/04/06 -- <a href="http://www.anysql.net/mysql/important_status_variables.html" title="MySQL中我认为比重要的一些Status变量">MySQL中我认为比重要的一些Status变量</a> (1)</li><li>2010/02/26 -- <a href="http://www.anysql.net/tools/webchart-dbconn-config2.html" title="WebChart的DB连接配置2">WebChart的DB连接配置2</a> (0)</li><li>2010/02/20 -- <a href="http://www.anysql.net/tools/webchart-multidb-support.html" title="定义不同数据源的SQL">定义不同数据源的SQL</a> (4)</li><li>2010/01/26 -- <a href="http://www.anysql.net/tools/webchart-logical-dbaccess2.html" title="逻辑连接层与物理连接层(2)">逻辑连接层与物理连接层(2)</a> (1)</li><li>2010/01/05 -- <a href="http://www.anysql.net/tools/webchart-forall-loop.html" title="DataReport中的FORALL循环">DataReport中的FORALL循环</a> (0)</li><li>2009/12/25 -- <a href="http://www.anysql.net/tools/sqluldr2-customized-escape-chars.html" title="SQLULDR2的自定义转义符处理">SQLULDR2的自定义转义符处理</a> (2)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (8)</li><li>2009/10/30 -- <a href="http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html" title="SQLULDR2功能增加, 性能不减">SQLULDR2功能增加, 性能不减</a> (14)</li><li>2009/10/28 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html" title="SQLULDR2生成Insert SQL语句">SQLULDR2生成Insert SQL语句</a> (4)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/mysql/mysql_statistics_view.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
