配置
-- 动态修改当前配置(基于内存,重启失效)
set global slow_query_log = ON;
# 开启慢日志查询永生生效
[mysqld]
slow_query_log= 1 # ON或者OFF也可以
slow-query-log-file=D:\mysql-5.7.27-winx64\data\mysql-slow.log
long_query_time= 3
#log_queries_not_using_indexes=on #记录未使用索引的
# log_output:日志存储方式。了解即可,一般都是写入文件
log_output='FILE'表示将日志存入文件,默认值是'FILE'。
log_output='TABLE'表示将日志存入数据库mysql.slow_log表中
做成计划任务、按日期每天(或每周) 收集慢日志(发送到邮箱)-flush-logs会重新生成一个慢日志文件(同时会刷新bin-log日志文件)
mv /data/3306/3306_slow.log /tmp/$(date +%F)_3306_slow.log
mysqladmin -uroot -p111111 -S /data/3306/mysql.sock flush-logs
慢日志统计分析
-- 次数 查询时间(总的查询时间=次数*查询时间) 锁表时间(总的锁表时间) 行数(总的行数)
Count: 2 Time=3.15s (6s) Lock=0.00s (0s) Rows=1.0 (2), t450_shangtua_c[t450_shangtua_c]@localhost
SELECT SUM(amount) AS tp_sum FROM `fa_cc_trade_order` WHERE `market_id` = 1 AND `addtime` >= 1562573085 LIMIT 1
mysqldumpslow -s at -a mysql-slow.log -- 按照 平均 最长时间排序
mysqldumpslow -s al -a mysql-slow.log -- 按照 平均 锁表时间长短排序
mysqldumpslow -s ar -a mysql-slow.log -- 按照 平均 查询的最多行数排序
bin/mysqldumpslow -s c -a mysql-slow.log -- 按照查询次数排序
mysqldumpslow -s t -a mysql-slow.log -- 按照总最长时间排序
mysqldumpslow -s l -a mysql-slow.log -- 按照总锁表时间长短排序
mysqldumpslow -s r -a mysql-slow.log -- 按照总查询的最多行数排序
其他工具推荐 https://github.com/daniel-nichter/hackmysql.com https://www.cnblogs.com/fengchi/p/6187099.html
-- 查看当前配置信息:
mysql> show variables like '%query%';
+------------------------------+------------------------------------------+
| Variable_name | Value |
+------------------------------+------------------------------------------+
| binlog_rows_query_log_events | OFF |
| ft_query_expansion_limit | 20 |
| have_query_cache | YES |
| long_query_time | 10.000000 |
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 1048576 |
| query_cache_type | OFF |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 8192 |
| slow_query_log | OFF |
| slow_query_log_file | D:\mysql-5.7.27-winx64\data\LYH-slow.log |
+------------------------------+------------------------------------------+
13 rows in set, 1 warning (0.00 sec)