一、慢查询日志:
用来记录在MySQL中响应时间超过阀值的语句,运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志中。long_query_time的默认值为10。Mysql数据库默认不开启慢查询日志。
慢查询相关语句:
查看慢查询日志是否开启 :show variables like 'slow_query_log'; (OFF 为关闭 ON为开启)
开启慢查询日志 :set global slow_query_log=1;
设置慢查询日志时间:set global long_query_time=20;
查询慢日志时间设置:show variables like 'long_query_time';
记录没有使用索引的sql 语句:set global log_queries_not_using_indexes=on;
日志分析工具:
mysqldumpslow:安装完MySQL后,默认带有mysqldumpslow
pt-query-digest:与mysqldumpshow工具相比,py-query_digest 工具的分析结果更具体,更完善。
二、Explain命令
exlain: exlain 命令用于SQL语句的查询执行计划
用法:explain+sql语句
执行计划的参数说明:
id:查询的序号
select_type:查询类型,用于区别普通查询,联合查询,子查询等的复杂查询
table:引用的表
type:显示使用了何种类型。从好到差const,eq_reg,ref,range,index和ALL
possible_keys:表示mysql可以从中选择查找表中的行的索引。如果此列是NULL,则没有相关的索引
key:实际使用的索引。空,没有使用索引
key_len: 表示索引中使用的字节数。不损失精度下,越短越好。
ref: 显示索引的哪一列被使用
rows: 找到所需的记录所需要读取的行数
Extra:该列包含 MySQL 查询的详细信息,重要的额外信息(Using temporary:表示需要创建临时表以满足需求;
Using filesort:表示无法利用索引完成排序)
需要注意的参数:
type:访问类型,如果type为 ALL 时,表示预计会进行全表扫描
key:使用的索引
rows:最大扫描的列数
extra: 注意Using filesort,Using tempoary