03
2016
11

慢查询定位

默认情况下mysql不记录慢查询
需要开启慢查询 默认10秒
1.mysql相关慢查询参数查看
show variables like '%slow%'; #查看慢查询配置信息
slow_launch_time	2
slow_query_log	OFF
slow_query_log_file	d:\wamp2\bin\mysql\mysql5.6.17\data\E3-slow.log
show variables like '%long_query_time%'; #查看慢查询配置时间
long_query_time	10.000000


2.设置慢查询(重启后失效)
set slow_query_log	= ON;#开启慢查询
set long_query_time = 1#当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短
set log-slow-queries = D:/wamp2/bin/mysql/mysql5.5.20/data/mysqlslowquery.log#记录日志的文件名。
3.执行sql 超过long_query_time执行时间 就会生成日志文件在log-slow-queries
EXPLAIN 分析
EXPLAIN SELECT * from tmp where title ='QQQ' order by id desc \G;
***********************
id: 1
select_type: SIMPLE #查询类型 SIMPLE 代表简单的 没有使用union及子查询
table: tmp #表名称
type: ALL #显示连接使用的类型 ALL最差 全表扫面
possible_keys: NULL #所有可用的所有
key: NULL #实际使用的索引
key_len: NULL
ref: NULL
rows: 5202289 #估算或扫面的记录行数
Extra: Using where; Using filesort #额外的开销 where 结果排序 ***临时表等 Using filesort和Using temporary 意味着 MYSQL 根本不能使用索引,效率会受到重大影响。应尽可能对此进行优化***


« 上一篇

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。