MySQL慢查询
2021/5/13 19:27:41
本文主要是介绍MySQL慢查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 开启和设置MySQL慢查询
- 通过命令(全局变量设置)
- 配置文件设置
- 注意
- 分析慢查询日志
https://blog.csdn.net/qq_35571554/article/details/82800463
开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句;
通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。
开启和设置MySQL慢查询
可以通过配置文件或者命令开启MySQL慢查询;
查看慢查询相关参数
mysql> show variables like 'slow_query%'; +---------------------+--------------------------------------+ | Variable_name | Value | +---------------------+--------------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /var/lib/mysql/ef1f09eb8b52-slow.log | +---------------------+--------------------------------------+ 2 rows in set (0.00 sec)
通过命令(全局变量设置)
将 slow_query_log 全局变量设置为“ON”状态
mysql> set global slow_query_log='ON';
设置慢查询日志存放的位置
mysql> set global slow_query_log_file='/var/lib/mysql/slow.log';
查询超过1秒就记录
mysql> set global long_query_time=1;
配置文件设置
修改配置文件my.cnf,在[mysqld]下的下方加入
[mysqld] slow_query_log = ON slow_query_log_file = /var/lib/mysql/slow.log long_query_time = 1
重启MySQL服务
service mysqld restart
注意
注意,设置slow_query_log_file时,目录必须存在,并且mysql 有权读写该目录,不然会报错;
mysql> set global slow_query_log_file='/root/slow.log'; ERROR 1231 (42000): Variable 'slow_query_log_file' can't be set to the value of '/root/slow.log' mysql> set global slow_query_log_file='/var/lib/mysql/slow.log'; Query OK, 0 rows affected (0.00 sec)
分析慢查询日志
利用explain
关键字可以模拟优化器执行SQL查询语句,来分析sql慢查询语句
mysql> EXPLAIN SELECT * FROM test_user ORDER BY id LIMIT 0,1000 ; +----+-------------+-----------+-------+---------------+---------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------+-------+---------------+---------+---------+------+------+-------+ | 1 | SIMPLE | test_user | index | NULL | PRIMARY | 4 | NULL | 1 | NULL | +----+-------------+-----------+-------+---------------+---------+---------+------+------+-------+ 1 row in set (0.00 sec) table显示这一行的数据是关于哪张表的 type显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL rows显示需要扫描行数 key使用的索引
这篇关于MySQL慢查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享
- 2024-02-22docker mysql 5.7
- 2024-02-18从 20 多套 MySQL 到 1 套 TiDB丨骏伯网络综合运营管理平台应用实践
- 2024-02-07mysql 外键索引入门介绍,为什么工作中很少有人使用?