<?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>一个故事@MySQL DBA &#187; slow log</title>
	<atom:link href="http://www.orczhou.com/index.php/tag/slow-log/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.orczhou.com</link>
	<description>一个故事@MySQL DBA</description>
	<lastBuildDate>Tue, 24 Aug 2010 01:44:36 +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>MySQL Slow Log慢日志分析(一)</title>
		<link>http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/</link>
		<comments>http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 12:32:36 +0000</pubDate>
		<dc:creator>orczhou</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[slow log]]></category>

		<guid isPermaLink="false">http://www.orczhou.com/?p=1163</guid>
		<description><![CDATA[<p>医生给病人诊断的时候，一般会使用听诊器来诊断肺部是否正常。如果你的MySQL出现了性能问题，第一个需要“诊断”的就是slow log（慢日志）了。</p>
<p>slow log文件很小，使用more less等命令就足够了。如果slow log很大怎么办？这里介绍MySQL自带的工具mysqldumpslow来帮你解析慢日志(也可以跳过本文，直接阅读<a href="http://dev.mysql.com/doc/refman/5.1/en/mysqldumpslow.html">Manual</a>)。</p>
<p><font color="red">1. 基本使用</font> </p>
<div class="mycode">
$mysqldumpslow slow.log > slow.dat<br />
$more slow.dat
</div>
<p>[......]</p><p class='read-more'><a href='http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>医生给病人诊断的时候，一般会使用听诊器来诊断肺部是否正常。如果你的MySQL出现了性能问题，第一个需要“诊断”的就是slow log（慢日志）了。</p>
<p>slow log文件很小，使用more less等命令就足够了。如果slow log很大怎么办？这里介绍MySQL自带的工具mysqldumpslow来帮你解析慢日志(也可以跳过本文，直接阅读<a href="http://dev.mysql.com/doc/refman/5.1/en/mysqldumpslow.html">Manual</a>)。</p>
<p><font color="red">1. 基本使用</font> </p>
<div class="mycode">
$mysqldumpslow slow.log > slow.dat<br />
$more slow.dat
</div>
<p><span id="more-1163"></span></p>
<p>输出的数据：</p>
<div class="mycode">
Count: 3  Time=62.67s (188s)  Lock=0.00s (0s)  Rows=1623770.7 (4871312), root[root]@localhost<br />
  SELECT /*!N SQL_NO_CACHE */ * FROM `feed_receive_0287`
</div>
<p>这里我们能够获得：这条语句在满日志中的出现次数、平均执行时间、总共执行时间、row send等。例如：SELECT /*!N SQL_NO_CACHE */ * FROM `feed_receive_0287`一共执行了3次，平均每次使用62秒。</p>
<p>在默认情况下，mysqlslowdump的输出结果会使用N和S代替SQL中出现的数字和字符串。例如：如下慢日志</p>
<div class="mycode">
  SELECT COUNT(*) as counter FROM feed_receive f WHERE f.RATED_UID=21621 AND f.suspended=-1 AND f.rater_type=4 AND f.rate=-2 AND f.username=&#8221;orczhou.com&#8221;
</div>
<p>会被mysqlslowdump抽象为：</p>
<div class="mycode">
  SELECT COUNT(*) as counter FROM feed_receive f WHERE f.RATED_UID=N AND f.suspended=-N AND f.rater_type=N AND f.rate=-N AND f.username=&#8221;S&#8221;
</div>
<p>如果想禁用这种抽象，可以使用-a参数</p>
<p><font color="red">2. 排序参数</font> </p>
<p>mysqlslowdump默认输出结果是按照count（SQL出现的次数）排序的。可以通过如下的参数控制：</p>
<style>
.mytable {
border-color:#000000;
border-style:dashed;
border-width:1px 0 0 1px;
border-collapse:collapse;
margin-left:25px;
}
.mytd {
border-color:#000000;
border-style:dashed;
border-width:0 1px 1px 0;
text-align:center;
}
</style>
<table width="500" cellspacing="0" cellpadding="0" border="0" align="center" class="mytable">
<tr>
<td class="mytd">-s t</td>
<td class="mytd">按总query time排序</td>
<td class="mytd">-s at</td>
<td class="mytd">按平均query time排序</td>
</tr>
<tr>
<td class="mytd">-s l</td>
<td class="mytd">按总locktime排序</td>
<td class="mytd">-s al</td>
<td class="mytd">按平均lock time排序</td>
</tr>
<tr>
<td class="mytd">-s s</td>
<td class="mytd">按总row send排序</td>
<td class="mytd">-s as</td>
<td class="mytd">按平均row send排序</td>
</tr>
<tr>
<td class="mytd">-s c</td>
<td class="mytd">按count排序</td>
<td class="mytd">&#8211;</td>
<td class="mytd">&#8211;</td>
</tr>
</table>
<p>例如：</p>
<div class="mycode">
mysqldumpslow -s at slow.log.old > slow.2.dat	#按照平均query time排序查看日志
</div>
<p><font color="red">3. 其他参数</font></p>
<table width="500" cellspacing="0" cellpadding="0" border="0" align="center" class="mytable">
<tr>
<td class="mytd">-r</td>
<td class="mytd">倒着排序</td>
</tr>
<tr>
<td class="mytd">-a</td>
<td class="mytd">不要将数字和字符串抽象成N和S</td>
</tr>
<tr>
<td class="mytd">-g</td>
<td class="mytd">仅仅分析相匹配的query</td>
</tr>
</table>
<p><br/></p>
<p><font color="red">4. 常用命令</font></p>
<p>由上面的常用参数就可以组合出如下的常用命令：</p>
<div class="mycode">
mysqldumpslow -s t slow.log.old > slow.1.dat	#按照query time排序查看日志<br />
mysqldumpslow -s at slow.log.old > slow.2.dat	#按照平均query time排序查看日志<br />
mysqldumpslow -a -s at slow.log.old > slow.3.dat	#按照平均query time排序并且不抽象数字的方式排序<br />
mysqldumpslow -a -s c slow.log.old > slow.4.dat #安装执行次数排序
</div>
<p>参考：<a href="http://dev.mysql.com/doc/refman/5.1/en/mysqldumpslow.html">mysqldumpslow Manual</a></p>
<p>（全文完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
