MySQL的SQL日志
从MySQL的慢SQL日志文件(Slow Log)或是通用SQL日志(General Log)提取待优化的SQL语句.
如何获取MySQL的SQL日志
MySQL通过设置数据库服务器参数来启用SQL日志.
启用慢日志(Slow Log)
MySQL慢日志记录执行时间等于或超过long_query_time
(单位为秒)、且扫描的记录行数等于或超过min_examined_row_limit
的SQL语句.
-
启用参数命令
set global log_output='file'
set global slow_query_log='on';
set global slow_query_log_file = '/tmp/localhost-slow.log';
set global long_query_time = 5; -
确认参数是否生效
show variables like '%slow%';
-
记录没有使用索引的SQL语句
对于没有使用索引的查询语句, 默认不在慢日志中记录;如果想要在慢日志中记录没有使用索引的SQL语句,可以通过设置参数
log_queries_not_using_indexes
来启用.set global log_queries_not_using_indexes=on;
启用通用日志(General Log)
General Log是记录数据库行为的通用日志, 它记录从客户端登录到断开链接之间的每个执行的SQL语句记录.
- 启用参数命令
set global general_log_file='/tmp/general_log';
set global general_log=on; - 确认是否启用
show global variables like '%general%';
+------------------+------------------+
| Variable_name | Value |
+------------------+------------------+
| general_log | ON |
| general_log_file | /tmp/general_log |
+------------------+------------------+
参考文档
https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html
https://dev.mysql.com/doc/refman/8.0/en/query-log.html