一:从日志中查看慢查询:(一般来说两者中开启慢查询日志)
1.1 慢查询日志参数:
不需要重启服务,就可以修改的:
slow_query_log:指定是否输出慢查询日志,指定为1表示输出,指定为0则表示不输出,默认值为0.
slow_query_log_file:指定日志文件存储路径和文件名,如果没有指定的话,默认指定文件名为[host_name]-slow.log
保存在MySQL数据库data目录
需要重启的服务才能生效的参数:
long_query_time:指定慢查询执行时间的阈值,以秒为单位,但最小可以指定到微秒,默认是10秒。
log_short_format:用来 控制输出到慢查询日志文件的信息,指定该选项后,会减少向慢查询日志中输入信息。
log_slow_admin_statements:用来控制是否将一些执行时间较长的管理类型语句,
如optimize table 、analyze table、alter table语句输出到慢查询日志。
log_queries_not_using_indexs:用来控制是否将未使用索引的语句的语句输出到慢查询日志文件
log_throttle_queries_not_using_indexs:一般会与log_queries_not_using_indexs参数组合使用,它的功能是
控制每分钟输出到慢查询日志的未使用索引的记录条数。默认值为0,这个0,意思说是不限制。
log_slow_slave_statements:MySQL复制环境专用的参数,用来控制是否将复制的查询语句输出到慢查询日志。
逻辑顺序:
(1)执行的必须是查询语句,而非管理性语句(除非启用log_slow_admin_statements)
(2)查询语句执行的时间达到或超过long_query_time参数指定的值,或者符合log_queries_not_using_indexs条件
(3)查询的记录量达到min_examined_row_limit参数指定的值。
(4)查询语句不违反log_throttle_queries_not_using_indexes参数设置。
1.2 开启慢查询:
通过修改mysql的全局变量,不需要重启服务,临时配置,重启配置丢失:
set global slow_query_log=ON;
set global slow_query_log_file="mysql_slow_query.log";
set global long_query_time=3;
#set global log_slow_admin_statements=ON; 在mariadb中有变化。不用改变这个参数。
2.通用查询日志:
通用查询日志(普通查询日志)不仅仅记录查询语句(包括慢查询),而是能够记录
mysqld进程所做的几乎所有操作,不仅仅是客户端发出的SQL语句会被记录到普通查询日志
中,对于数据库或对象的管理操作也会记录下来,甚至连客户端连接或断开,服务器都会向文件中写入相关信息。