Mysql 慢查询日志和通用查询日志

慢查询

Mysql慢查询日志可以记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,可以通过设置long_query_time为0来捕获所有的查询。
不用担心开启慢查询日志会带来额外的I/O开销,我们在I/O密集型场景做过基准测试,慢查询日志带来的开销可以忽略不计(实际上在CPU密集型场景的影响还稍微大一些)。更需要担心的是日志可能消耗大量的磁盘空间。如果长期开启慢查询日志,注意要布署日志轮转(log rotation)工具。或者不要长期启用慢查询日志,只在需要收集负载样本期间开启即可。

相关参数

//查看版本相关
show variables like '%version%';
Mysql 慢查询日志和通用查询日志_第1张图片
image.png
//慢查询的状态和日志文件位置
show variables like '%slow_query_log%';
Mysql 慢查询日志和通用查询日志_第2张图片
//查看当前慢查询状态
show variables like '%quer%';

Mysql 慢查询日志和通用查询日志_第3张图片
image.png
  1. slow_query_log_file 的值是记录的慢查询日志到文件中(注意:默认名为主机名.log,慢查询日志是否写入指定文件中,需要指定慢查询的输出日志格式为文件,相关命令为:show variables like ‘%log_output%’;去查看输出的格式)。

  2. long_query_time指定了慢查询的阈值,即如果执行语句的时间超过该阈值则为慢查询语句,默认值为10秒。

  3. log_queries_not_using_indexes如果值设置为ON,则会记录所有没有利用索引的查询
    (注意:如果只是将log_queries_not_using_indexes设置为ON,而将slow_query_log设置为OFF,此时该设置也不会生效,即该设置生效的前提是slow_query_log的值设置为ON)
    一般在性能调优的时候会暂时开启

慢查询日志输出到表中(即mysql.slow_log) set global log_output='TABLE';

慢查询日志仅输出到文本中(即:slow_query_log_file指定的文件 set global log_output='FILE';

慢查询日志同时输出到文本和表中 set global log_output='FILE,TABLE';

查询当前慢查询的语句的个数 show global status like '%slow%';
上述命令只对当前生效,当MySQL重启失效,如果要永久生效,需要配置my.cnf

通用查询

相关参数

//可以看到通用查询的状态和存储路径
show variables like '%general%';
Mysql 慢查询日志和通用查询日志_第4张图片
image.png
//查看当前通用查询日志输出的格式
//FILE(存储在数数据库的数据文件中的hostname.log)
//或者TABLE(存储在数据库中的mysql.general_log)
show variables like '%log_output%';
Mysql 慢查询日志和通用查询日志_第5张图片
image.png

开启通用日志查询: set global general_log=on;

关闭通用日志查询: set globalgeneral_log=off;

设置通用日志输出为表方式: set global log_output='TABLE';

设置通用日志输出为文件方式: set global log_output='FILE';

设置通用日志输出为表和文件方式:'set global log_output='TABLE,FILE';'
上述命令只对当前生效,当MySQL重启失效,如果要永久生效,需要配置my.cnf

你可能感兴趣的:(Mysql 慢查询日志和通用查询日志)