一、定位慢查询

SQL优化的一般步骤:先查询mysql数据库运行状况,然后定位慢查询,再分析sql的执行过程,然后进行优化

1.使用show status查询数据库的运行状况

//显示数据库运行状态 SHOW STATUS //显示数据库运行总时间 SHOW STATUS LIKE 'uptime' //显示连接的次数 SHOW STATUS LIKE 'connections' //显示执行CRUD的次数 SHOW STATUS LIKE 'com_select' SHOW STATUS LIKE 'com_insert' SHOW STATUS LIKE 'com_update' SHOW STATUS LIKE 'com_delete'

2.定位慢查询sql

我们可以通过mysql来记录慢查询,一旦有sql执行时间超过了设置的慢查询时间,就会被记录到慢查询日志中。这样我们就可以从慢查询日志中定位慢查询sql,然后进行分析优化。
查看慢查询相关信息
//显示慢查询次数 SHOW STATUS LIKE 'slow_queries' //显示慢查询时间,默认为10s SHOW VARIABLES LIKE 'long_query_time'
mysql的慢查询默认是关闭的,可以通过修改配置文件或通过命令来开启。
①修改配置文件方式
Linux下修改my.cnf,Windows下修改my.ini。修改后需要重启mysql才会生效。
#开启慢查询 slow-query-log=1 #慢查询的文件路径 slow_query_log_file="D:/Program Files/MySQL/Log/mysql-slow.log" #慢查询时间。默认为10秒long_query_time=10
②命令方式
也可以使用命令来修改。
【session级别】 #开启慢查询 SET slow_query_log='ON'; #设置慢查询日志存放位置 SET slow_query_log_file='/usr/local/mysql/data/slow.log'; #设置慢查询时间 SET long_query_time=3 【global级别】 SET global slow_query_log='ON'; SET global slow_query_log_file='/usr/local/mysql/data/slow.log'; SET global long_query_time=3

3.分析慢查询

在实际生产环境中,可能因为开发写了不正确的SQL语句,索引优化的不好,或其他查询操作而导致数据库整体性能下降。我们只需要分析一下慢查询日志就会知道问题出在哪。
//查看是否启用慢日志记录和状态 show variables like "%slow%"
如果慢查询日志中记录内容较多,则可以使用Mysql自带的慢查询日志分析工具mysqldumpslow工具来对慢查询日志进行分类汇总。该工具位于/mysql/bin目录下。mysqldumpslow将会自动将文本完全一致但变量不同的SQL语句视为同一个语句进行统计,变量值用N来代替。