注意这节课是必须在linux的操作系统中 !!! 并且开两个会话窗口,一个是mysql>,另一个是[root@localhost ~]#,这两个会话都是同一个linux的MySQL数据库
当我们根据上一节课的知识查到当前数据库是以查询select为主,那么我们就要对当前数据库进行优化,我们到底是优化哪些查询SQL,即哪些select语句呢? 我们就可以使用慢查询日志定位出哪些SQL语句的执行效率低,从而对这类SQL语句进行优化
慢查询日志 慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志 show variables like 'slow_query_log'; #查看慢查询日志是否打开,OFF关闭,ON打开 MySQL的慢查询日志默认没有开启,需要在MySQL的配置文件(/etc/my.cnf)中配置如下2条信息:
1、开启MySQL慢日志查询开关
slow_query_log=1
2、设置慢查询日志的时间为2秒,SQL语句执行时间超过两秒,就会视为慢查询,记录慢查询日志
long_query_time=2
配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息/var/lib/mysql/localhost-slow.log
在[root@localhost ~]#视图下输入如下1行:
xxxxxxxxxx
vi /etc/my.cnf
按键盘上大写的G切换到文本最后一行 按键盘上的a表示插入模式
在弹出来的文本里输入如下3行: #慢查询日志
slow_query_log=1
long_query_time=2
按键盘上的esc,然后输入:x,表示保存退出
在[root@localhost ~]#视图下输入如下1行,即可找到慢日志文件localhost-slow.log
cd /var/lib/mysql && ll
在[root@localhost ~]#视图下输入如下1行,即可查看慢日志文件localhost-slow.log的内容 内容有: 慢日志文件当刚开启时只记录了当前数据库版本、当前数据库端口。后续我们执行select时,就会记录所有执行时间超过指定参数的SQL语句
cat localhost-slow.log
然后在[root@localhost ~]#视图下重启MySQL服务器
systemctl restart mysqld
重新登录MySQL
mysql -u root -p
查看慢查询日志是否打开,OFF关闭,ON打开
show variables like 'slow_query_log';
在[root@localhost mysql]#视图下输入如下1行,表示查看慢日志文件尾部实时输出的内容
tail -f localhost-slow.log
接着在mysql>视图下输入如下2行,表示执行一条查询语句
use bilibili;
select * from tb_user;
回到[root@localhost mysql]#视图下,发现并没有新记录出现,原因是我们上面那条查询语句的执行时间在指定参数内,即这上面那条查询语句不是慢语句 当某一条查询语句的执行时间超过我们设置的2秒,这条查询语句就会被记录到慢日志文件里面
慢日志文件记录的内容: 哪个用户,哪个主机,耗时,锁了多少行,返回多少条记录,用的哪个数据库,当前操作的时间,执行的哪个SQL语句
我们就能够通过慢查询日志定位查询效率低的SQL