配置开启如下:
Linux:
在mysql配置文件my.cnf中增加
log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)
log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)
log-long-format (如果设置了,所有没有使用索引的查询也将被记录)
Windows:
在my.ini的[mysqld]添加如下语句:
log-slow-queries = E:\web\mysql\log\mysqlslowquery.log
开启慢查询日志
mysql set global slow_query_log=1;
定义时间SQL查询的超时时间
查看慢查询日志的保存路径
mysql show global variables like 'slow_query_log_file';
查看慢查询
cat /var/log/mysql/slow.log
①.,配置开启
使用mysql自带命令mysqldumpslow查看
常用命令
-s ORDER what to sort by (t, at, l, al, r, ar etc), 'at' is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
s,是order的顺序,说明写的不够详细,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序 -t,是top n的意思,即为返回前面多少条的数据 -g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -t 10 -s t -g "left join" host-slow.log这个是按照时间返回前10条里面含有左连接的sql语句.
long_query_time 参数的查看
默认是10秒,10秒以上的sql会记录.可进行值的修改,
long_query_time 默认不开启 ,如果不是需要进行开始调优,一般不建议开启此参数.
永久开启:
在my.cnf中的
①查看慢查询的时长
看此图默认10秒,是大于10秒,不等于10秒.
临时修改,重启mysql后失效,修改后需要新开连接才能查询到
永久在配制文件中修改
查看慢sql个数
将所有没有使用带索引的查询语句全部写到慢查询日志中
设置没带索引的慢sql进行记录
最后汇总my.cnf配制
如何查找mysql中查询慢的sql语句
第一段:mysql数据库有几个配置选项可以帮助我们及时捕获低效sql语句
①.,slow_query_log
这个参数设置为on,可以捕获执行时间超过一定数值的sql语句.
当sql语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短.
记录日志的文件名.
这个参数设置为on,可以捕获到所有未使用索引的sql语句,尽管这个sql语句有可能执行得挺快.
第二段:检测mysql中sql语句的效率的方法
①.、通过查询日志
(1)、windows下开启mysql慢查询
mysql在windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上
代码如下
log-slow-queries
=
f:/mysql/log/mysqlslowquery.log
long_query_time
mysql在windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上
log-slow-queries=/data/mysqldata/slowquery.log
这是一个慢查询日志的展示工具,能够帮助 DBA 或者开发人员分析数据库的性能问题,给出全面的数据摆脱直接查看 slow-log.QAN(Query Analytics)
QAN-Agent(client):负责采集 slow-log 的数据并上报到服务端
QAN-API(server):负责存储采集的数据,并对外提供查询接口
QAN-APP:专门用来展示慢查询数据的 grafana 第三方插件
① 数据流转
slow-log -- QAN-Agent -- QAN-API -- QAN-APP(grafana)