<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[mysql的merge引擎引发的性能问题]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 11 Aug 2010 07:50:21 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	MERGE引擎类型可以把许多结构相同的表合并为一个表。通过对merge表的简单查询，可以轻松实现对多个子表进行查询的目的。<br/><br/>我们的日志系统按照月为单位进行分表，由merge联合所有月份子表，实现跨月（跨表）的日志查询。这样的做法是程序端的逻辑比较简单，无需关注多表的数据整合和处理。<br/><br/>随着子表越来越多、数据越来越大，查询的速度越来越慢。子表的数据量增长并非数量级的，那么从理论上讲通过merge进行查询，速度受到影响的浮动应该是很小的，但现实却非如此。<br/><br/>刚开始并不知道原因，通过profiling检查详细的耗时情况，发现Sending data占用了99%的时间，从官方解释来看，Sending data貌似是发送数据到client端的耗时，检查了一下，仅仅只有几K的数据发送，明显不是此原因。SQL挺简单的，基本的优化也都做了，那么是什么原因？<br/><br/>之后调试代码时无意中针对一个子表进行了一次查询，发现速度几十倍的提高，之前对merge的查询需要20多秒，现在仅仅不到1秒就执行完了，这个感觉是很明显的，于是进一步进行了测试，发现问题的确如此。<br/><br/>所以，建议还是在代码逻辑中对多表数据进行处理，避免使用Merge引擎。<br/><br/>有时间看一下源码中Sending data是如何计算的以及Merge是如何进行多表数据集合的。 希望Mysql能把Merge引擎做的更加稳定、高效，真正发挥Merge引擎的优势。<br/><br/>来源：http://hi.baidu.com/chancey/blog/item/775d8682db4387a90df4d20e.html
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] mysql的merge引擎引发的性能问题]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>