找出MySQL瓶颈的基准和剖析
时间:2010-09-27 来源:sunss
有些时候,我们需要优化MySQL。那我们要对MySQL进行哪些改进呢?一条特殊的query?数据库模式?服务器硬件?唯一的办法是测量你的系统在做什么,在各种条件下测量它的性能。这就是我们下面要学习的。
最好的策略就是找出最弱的环节,并加强你的应用程序链的组成。这非常有用,如果你不知道什么阻止最优性能,或者以后什么将要阻止最优性能的发挥。
基准和剖析是两条基本的找出瓶颈的方法。它们是有关联的,但是它们又不完全相同。基准测量你的系统的性能。这将有助于确定系统的承受能力,向你展示哪些改变有用哪些没用,或者显示在不同的数据下你的应用程序的性能。
相反,剖析帮助你找出你的应用程序在哪里花费了大量的时间,或者消耗了大量的资源。换句话说,基准可以回答“这种执行表现怎么样?”,而剖析可以回答“为什么它会这个样子执行?”
我们准备在这个章节中讲述两部分内容,基准和剖析。我们开始讨论基准的原因和对策,然后引入特定的基准的标杆(或者尺子)。我们先向你展示如何计划和设计基准,为精确的结果做设计,执行基准和分析结果。最后,来看看基准工具和如何使用它们的例子。
剩下的章节讲述如何优化应用程序和MySQL。我们将会详细地展示我们已经应用于生产帮助分析应用程序的性能,真实的优化代码。我们也会展示怎样记录MySQL的query语句,分析日志,使用MySQL的状态计数器,以及用来查看MySQL和你的query语句怎样做的其它工具。
-
为什么需要基准?
很多大中型的MySQL部署有专门的标杆用在基准里。然而,每个开发者和DBA也应该熟悉基础的基准和操作,因为它们非常有用。下面是基准可以帮助你的一些事情:
- 测量你的应用程序当前是怎样执行的。如果你不知道你的应用程序当前执行多快,你不能确定哪些改变有用。你还可以用历史基准结果,来诊断比不能预期的问题。
- 证实你系统的可扩充性。你可以用基准来模仿比你的生产环境能处理的多得多的负载,比如成千上百倍的增加用户。
- 计划增长。基准能帮助你评估将来你的预计负荷需要多少硬件,网络容量和其它资源。这能在升级或者大量应用程序改变的时候,帮助减少风险。
- 测试你的应用程序在一个变化的环境里的承受能力。例如,你可以找出你的应用程序,在并发下不定时的峰值或者不同的服务器的配置的情况下,是怎样执行的,或者你可以看到在不同的数据分布下它是怎样处理的。
- 测试不同的硬件、软件和操作系统配置。对于你的系统来说,是RAID5还是RAID10更好?当你从ATA磁盘切换到SAN存储的时候,随机写的性能是怎样变化的?2.4的Linux内核比2.6的更好吗?MySQL的升级有助于提高性能吗?对于你的数据,不同的存储引擎有影响吗?你可以用不同的基准来回答这些问题。
对于其他目的,你也可以用基准,例如,为你的应用程序创建一个单元测试套件,但是在这里我们仅仅关注性能相关方面。