简述:分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询 超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。它能记录下所有执行超过 long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化。在优化MySQL时,通常需要对数据库进行分析,常见的分析手段有 慢查询日志,EXPLAIN 分析查询, profiling分析 以及 show命令查询系统状态及系统变量,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。思路:--> 分析慢查询日志 --> 查看表结构、表状态 --> 查看表索引 --> 分析sql语句 --> explain --> 修改sql语句 --> 验证修改结果慢查询日志配置:1、在my.ini配置文件中添加以下选项:log-slow-queries=master-0-slow.log 慢查询日志位置log-queries-not-using-indexes=on 没有使用索引的Query也计入慢查询日志long_query_time=1 当Query语句大于1秒时记入慢查询日志--> linux下mysql开启慢查询方法:mysql在linux系统中的配置文件一般是my.cnf,我的路径是/etc/my.cnf,你根据自己编译安装的路径去查找 vi /etc/my.cnf一样是在[mysqld]下面加上:log-slow-queries=/var/lib/mysql/slowquery.loglong_query_time=2log-queries-not-using-indexes这里就不再解释了,加上后重启mysql,就可以到/var/lib/mysql下看是否有slowquery.log生成了. cd /var/lib/mysql/2、在命令窗口通过命令查询慢查询配置信息① 查看Query语句执行时间大于多少秒计入慢查询日志通过命令行动态配置:MySQL> set long_query_time=1;② 查看慢查询日志是否打开与存放路径通过命令行动态配置:MySQL> set global slow_query_log="ON"慢查询日志格式# Time: 120331 10:05:48# User@Host: root[root] @ 91SK-B49337164E [10.10.10.99]# Query_time: 14.031250 Lock_time: 0.218750 Rows_sent: 0 Rows_examined: 90785 SET timestamp=1333159548; delete from orderinfo;这是慢查询日志中的一条,用了14.031250秒,锁了0.218750秒,返回0行,一共查了90785行通过mysqldumpslow命令查看慢查询日志:1、 由于mysql自带命令mysqldumpslow.pl使用的是perl脚本,所以需要安装perl环境。下载ActivePerl.exe安装包并进行安装。2、在DOS命令行下执行mysqldumpslow命令使用mysqldumpslow命令在f:master-0-slow.log慢查询日志中查找日志中记录次数最多的前10条SQL语句。并存放到f:master-slow-0.txt文件中。mysqldumpslow命令解析:-s, 表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;-t, 是top n的意思,即为返回前面多少条的数据;-g, 后边可以写一个正则匹配模式,大小写不敏感的;例如:返回记录集最多的10个查询。按照时间排序的前10条里面含有左连接的查询语句。# The ideal of life is for ideal life! #本文永久更新链接地址