要分析的sql语句是执行速度比较慢的。查找执行速度比较慢的sql语句。找到后,具体分析。
一、慢查询日志
慢查询日志是一种mysql提供的日志,记录所有执行时间超过某个时间界限的sql的语句。这个时间界限,我们可以指定。在mysql中默认没有开启慢查询,即使开启了,只会记录执行的sql语句超过10秒的语句。
1. 如何开启慢查询日志
打开mysql的配置文件,window系统下是my.ini / linux系统下是my.cnf
max_connections=100:最大的连接数,默认是100
log-slow-queries='man-log':指定慢查询日志的名称,默认是保存在和mysql的数据库文件同一个文件夹里面的。我们也可以自己知道存储位置,比如log-slow-queries=”d:/log”
long_query_time=0.5:指定的时间界限。默认是10秒
注意: 修改完成后,要重启mysql。
2. 测试慢查询日志是否记录超过0.5秒的sql 语句。
benchmark(count,expr)函数可以测试执行count次expr操作需要的时间。
查看慢查询日志里面记录的sql语句的情况。
在mysql的客户端进行查看慢查询日志的时间界限
也可以更改该时间界限,只对当前会话有效。
二、profiles机制
该机制能够精确的记录执行sql语句的时间,能精确到小数点后8位
开启方式:直接在 mysql的客户端进行开启
set profiling=1|0(开启和关闭)
查看记录的时间:
show profiles
注意:不适应时,最好将其关闭
php当mysql的客户端,php代码如何实现。
//开启 $sql="set profiling=1"; mysql_query($sql); //查询 $sql="show profiles"; mysql_query($sql);
一个sql语句执行比较慢,大多数的原因是没有用到索引。