mysql 慢查询
mysql 慢查询
1.1 检查当前mysql是否开启慢查询
//ON是开启状态 OFF是关闭状态
show variables like '%slow_query_log%'
2.1 开启慢查询
慢日志功能默认情况是关闭的,只当需要调优的时候才开启,因为开启或多或少会影响性能。刚说到当mysql查询响应时间超过配置的阈值时,才会记录到慢sql中
//永久开启慢查询
vim /etc/my.cnf
slow_query_log=1
slow-query-log-file=/var/lib/mysql/tiaoban-slow.log
long_query_time = 5 //设置阈值,超过5秒的将会被记录成慢查询
systemctl restart mysqld //重启mysql
//临时开启慢查询,只对当前会话有效,不建议使用
set global slow_query_log = 1
3.1 测试查看慢查询日志
mysql -uroot -pLwc263@yuan
//上面阈值5秒,我故意慢查询6秒
select sleep(6);
//查看记录了多少条慢查询
show global status like '%Slow_queries%';
//退出mysql,可以看到我们刚才的慢查询被记录进去了
tail -f /var/lib/mysql/tiaoban-slow.log
4.1 自带慢日志分析工具mysqldumpslow
生产环境中可能会有几十条甚至上百条慢日志记录,Mysql自带的慢日志分析工具mysqldumpslow,可以按慢sql的访问次数、锁定时间、返回记录、查询时间等对慢日志记录进行筛选
返回记录集最多的十个慢sql
mysqldumpslow -s -r -t 10 /var/lib/mysql/tiaoban-slow.log
l:按锁的时间
r:返回记录
t:查询的时间
c:记录的次数
-s:order排序方式
-r:倒序
-t:top n的意思,返回前面多少条数据 -t 10
-g:支持正则表达式,以及忽略大小写