MySQL慢日志(Slow Query Log)是MySQL数据库记录执行时间超过设定阈值的SQL语句的日志文件。通过慢日志,可以找出执行效率低下的SQL语句,从而进行优化。
MySQL慢日志主要分为两种类型:
慢日志主要用于以下场景:
原因:MySQL默认情况下未开启慢日志。
解决方法:
-- 开启慢日志
SET GLOBAL slow_query_log = 'ON';
-- 设置慢查询阈值(单位:秒)
SET GLOBAL long_query_time = 2;
-- 设置慢日志文件路径
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-query.log';
原因:慢日志文件过大,占用过多磁盘空间。
解决方法:
# 删除慢日志文件
rm /var/log/mysql/slow-query.log
# 清空慢日志文件
echo "" > /var/log/mysql/slow-query.log
编辑MySQL配置文件(如my.cnf
),添加以下配置:
[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2
logrotate = /etc/logrotate.d/mysql
然后创建/etc/logrotate.d/mysql
文件,添加以下内容:
/var/log/mysql/slow-query.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 mysql mysql
}
原因:SQL语句执行效率低下。
解决方法:
mysqldumpslow
或pt-query-digest
分析慢日志,找出执行效率低下的SQL语句。# 使用mysqldumpslow分析慢日志
mysqldumpslow /var/log/mysql/slow-query.log
# 使用pt-query-digest分析慢日志
pt-query-digest /var/log/mysql/slow-query.log
-- 添加索引示例
CREATE INDEX idx_name ON table_name (column_name);
通过以上方法,可以有效优化MySQL慢日志,提高数据库性能。
领取专属 10元无门槛券
手把手带您无忧上云