一、慢查询(慢日志)
默认关闭的
定位慢SQL
- 简单:show profile,启用时会对服务器的性能产生额外的负担
-- 启用性能监控
mysql> set profiling=1;
-- 执行SQL
mysql> SELECT * from member
-- 性能分析
mysql> show profiles;
- 详细:performance_schema(不推荐)
启用慢查询日志
set global slow_query_log=‘ON’;
指定日志输出格式
两种输出格式 TABLE (推荐)和 FILE
- TABLE:慢日志以表格形式存储到slow_log表中
- FILE:慢日志以文本文件格式存储到磁盘
查看当前输出格式:
set global slow_query_log='ON';
设置输出格式:
set global log_output=’FILE’;
set global log_output=’TABLE’;
set global log_output=’FILE,TABLE’;
查询TABLE记录慢日志:
select * from mysql.slow_log;
查看FILE记录的慢日志
二、MySql Explain优化命令使用
type列
用于表示访问表时所采用的访问类型
- const:表示通过索引只能匹配到一行数据 explain select * from student where id = 1688
- eq_ref:表示使用了等值连接 explain SELECT * FROM student s1 JOIN student s2 ON s1.id = s2.id WHERE s1.age = 25
- ref:表示使用了非唯一索引进行查找,并返回匹配的多行或一行数据 explain select * from student where name = ‘张68’
- range:表示使用了索引进行范围查找 explain select * from student where age < 1688
- index:表示全索引扫描 explain select count(*) from student ;explain select sum(age) from student
- all:表示全表扫描 explain select * from student