SQL及索引优化
发现有问题的sql: 使用MySQL慢查询日志对有效率问题的sql进行监控
是否开启慢查询: SHOW VARIABLES LIKE 'slow_query_log';
查看慢查询日志存放位置: SHOW VARIABLES LIKE 'slow_query_log_file';
是否将没有使用索引的SQL写入慢查询日志中(优化用): SHOW VARIABLES LIKE 'log_queries_not_using_indexes';
超过多少秒的SQL记录到慢查询日志中: show variables like 'long_query_time';
开始:
查看这个是否为on
SHOW VARIABLES LIKE "show_compatibility_56";
不为on,则
SET GLOBAL show_compatibility_56=ON;
切换数据库
USE information_schema;
查看慢查询所定义的时间(即多少时间以内为慢查询)
SELECT * FROM GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'LONG_QUERY_TIME';
OR
SHOW VARIABLES LIKE "long_query_time";
设置慢查询定义的时间(为0则是记录所有)
SET GLOBAL long_query_time=5;
查看并开启慢查询日志
SHOW VARIABLES LIKE 'slow_query_log';
SET GLOBAL slow_query_log=ON;
查看并开启记录未使用索引的sql
SHOW VARIABLES LIKE 'log_queries_not_using_indexes';
SET GLOBAL log_queries_not_using_indexes=ON;
查看慢查询日志的内容:
# Time: 2017-10-25T09:22:58.637186Z
# User@Host: root[root] @ localhost [::1] Id: 5
# Query_time: 0.000000 Lock_time: 0.000000 Rows_sent: 2 Rows_examined: 2
use sakila;
SET timestamp=1508923378;
select * from store;
# Time: 2017-08-14T05:56:54.477368Z
执行SQL的主机信息
# User@Host: simple[simple] @ [114.114.114.114] Id: 2940
SQL的执行信息
# Query_time: 7.828226 Lock_time: 0.000203 Rows_sent: 15010 Rows_examined: 15010
use wsh;
SQL的执行时间
SET timestamp=1502690214;
SQL的内容
select * from `database`.`table`;