最佳MySQL性能调优工具?
哪一个是MySQL最好的、用户友好的性能工具?我想得到帮助,找出我的设置瓶颈。SQL语句、设置变量或其他方面有问题吗?坏消息:有GUI工具可以帮助解决这一问题,但这是一项熟练且广泛的工作。因此,它们并没有涵盖所有内容,您可能需要使用命令行stuff/sql语句等来提供帮助。我只真正使用过命令行工具。我将概述一下我知道/使用过的东西: 首先,您需要一个好的数据库设计。如果设计不好,你只能走这么远。这包括归一化,以及对字段使用适当的类型。我将把这一点留在这里,因为我认为这有点旁敲侧击,而不是你想要的 确保MySQL查询缓存已设置并正常工作,如果可以的话,给它多一点RAM,并确保重要查询没有做任何阻止MySQL缓存它们的事情。例如,在查询中使用NOW()函数可以做到这一点——原因很明显——NOW每秒都会更改!相反,您可以在sql中添加一个时间戳,并使用最接近的分钟/小时/天(您可以避开的最大时间段)的时间来允许mysql获得一些缓存好处 开始优化:在select前面粘贴“EXPLAIN”是查看查询执行情况并确定如何改进查询的方法。学习解释输出:您通常能够添加新索引/向现有索引添加列以改进内容。但您也会遇到需要重新构造查询的情况 从提高MySQL的性能开始(假设您还不知道问题查询是什么)是检查慢速查询日志-它将所有查询记录到一个文件中,耗时超过x秒 概述,包括配置,如果它还没有记录这一点,在这里:-我还发现,将long_query_time设置为0一天左右,以便所有查询都记录在这里,并记录所用的时间,这是一个有用的方法,可以准确了解性能的发展方向。但我不会马上去那里!不要让它开着,木头会变得很大 一旦您有了几天的日志记录,我就从这里找到了mysqlsla(mysql慢速日志分析器):这是一个很好的工具 它可以做的不仅仅是缓慢的查询日志分析——阅读手册。但是要解释它对慢速日志的作用:慢速查询日志可能包含大量数据,因此很难确定哪些查询总体上最昂贵-例如:它们运行了多少次,以及where子句中两个查询实际上是相同的,但id不同 MySQL sla为您完成了这一切。它在日志中运行,可以对where子句中相同/具有不同值的查询进行分组。然后,它(默认情况下)根据总执行时间向您显示前10个查询—这通常会带来一些惊喜,但通常是最有成效的起点—使用最昂贵的查询并对其进行解释,看看您是否可以改进它 有些查询需要很长时间,而且不容易改进。在这种情况下,您能否以另一种方式获取数据,或者至少缓存数据?您甚至可能会发现需要更改DB模式。类似地,有些查询可能位于mysqlsla输出的顶部,因为您经常运行它们(如果long_query_time设置为0,则尤其如此),即使它们运行得非常快。也许是时候给你的应用添加一些缓存了 看起来也很有希望-从未使用过它,但是mk query profiler工具应该可以用于进一步研究查询速度慢的原因 还有一件完全不同的事情要看:PHPMYADMIN中的“状态”页面(或者您可以运行所有查询来生成此信息…)-它以红色突出显示它认为可能不好的事情,并可以帮助您查看从分配系统资源中可能获得的好处。我对此不太了解——我的方法一直是,如果某个东西是红色的,看起来不好,就去阅读它,决定它是否重要,以及我是否应该做些什么(通常意味着通过更改配置为MySQL分配更多资源)最佳MySQL性能调优工具?,mysql,performance,Mysql,Performance,哪一个是MySQL最好的、用户友好的性能工具?我想得到帮助,找出我的设置瓶颈。SQL语句、设置变量或其他方面有问题吗?坏消息:有GUI工具可以帮助解决这一问题,但这是一项熟练且广泛的工作。因此,它们并没有涵盖所有内容,您可能需要使用命令行stuff/sql语句等来提供帮助。我只真正使用过命令行工具。我将概述一下我知道/使用过的东西: 首先,您需要一个好的数据库设计。如果设计不好,你只能走这么远。这包括归一化,以及对字段使用适当的类型。我将把这一点留在这里,因为我认为这有点旁敲侧击,而不是你想要的
最近,我发现运行ShowProcessList在正在遭受灾难的服务器上也很有用。虽然它只提供实时(好吧,实时快照)信息,但它可以帮助您了解在给定时间发生的事情,特别是如果您刷新几次并观察更改的话。我最近发现一台服务器使用每一个可用的mysql连接来运行使用此方法的相同查询。当然,它会出现在慢速查询日志中,但这是一种非常快速和明显的方式来查看发生了什么 他是你的朋友。除此之外,您还必须依靠各种特殊工具、测试和操作系统工具来准确地了解正在发生的事情 从操作系统工具(有助于确定某个情况是CPU绑定还是IO绑定)或MySQL本身可以看到的各种变量(显示全局变量、显示引擎innodb状态等),可以有效地看到很多东西 我觉得拥有一个性能测试环境非常重要。在实验室的生产级硬件上运行类似于生产的负载(使用负载模拟)的生产级数据库(价格昂贵但必不可少) 一旦这样做了,您就可以在完全安全的情况下调整任何参数,知道即使它融化了整个服务器,您也可以在不影响任何东西的情况下重建它 不要做人们建议的特定事情,除非你已经在你的性能测试环境中对它们进行了测试,并且发现它们确实是有益的 从本质上讲,性能调整通常按以下顺序关注三个方面:
- 数据库本身的结构(表结构、索引等)
- 询问
- 调整服务器参数