一、MySQL 日志类型
日志用于记录数据库的运行情况,以及用户对数据库执行的各类操作。当数据库发生故障时,可以根据日志分析和解决问题,从而对数据库进行恢复。MySQL 的日志类型如下:
日志类型 | 描述 |
---|---|
重做日志(redo log) | 重做日志是一种屋里格式的日志,记录的时物理数据页面的修改信息,其 redo log 是顺序写入 redo log file 的物理文件中去的 |
回滚日志(undo log) | 回滚日志是一种逻辑格式的日志,在执行 undo 的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于 redo log 的。 |
二进制日志 (binlog) | 二进制日志是一种逻辑格式的日志美以二进制文件的形式记录了数据库中的操作,但不记录查询语句 |
错误日志 (errorlog) | 错误日志记录着 mysqld 启动和停止,以及服务器在运行过程中发生的错误的相关信息 |
慢查询日志(sllow query log) | 慢查询日志记录执行时间过长和没有使用索引的查询语句 |
一般查询日志 (general log) | 记录了服务器接收到的每一个查询和命令,无论这些查询或命令是否是争取甚至是包含语法错误,general log 都会记录下来 |
中继日志 (relay log) | 中继日志类似二进制,可用于赋值架构中,是从服务器和主服务器的数据保持一致 |
二、认识慢查询日志
慢查询日志用于记录 MySQL 数据库中响应时间超过指定阈值的语句。慢查询日志通常也被成为慢日志,因为它不仅仅只针对 SELECT 语句,想 INSERT、UPDATE、DELETE 等语句,只要响应时间超过所设定的阈值都会记录下来。
参数 | 描述 |
---|---|
slow_query_log | 是否开启慢查询日志,1开启,0关闭 |
slow_query_log_file | 慢查询日志存储路径,可选。 |
long_query_time | 阈值,当SQL语句的响应时间超过了该阈值就会被记录到日志中 |
log_queries_not_using_indexes | 未使用索引的查询也被记录到慢慢查询日志中,可选 |
log_output | 日志存储方式,默认为 FILE。FILE:表示将日志存入文件,TABLE:表示将日志存入数据库,FILE,TABLE:表示同时将日志存入文件和数据库 |
三、开启慢查询日志
慢查询日志可以通过命令临时设置,也可以修改配置文件永久设置
# 查看是否开启哦了慢查询日志
show variables like 'slow%';
# 临时开启慢查询日志
set global slow_query_log ='ON';
# 设置阈值为1秒
set long_query_time=1;
# 慢查询日志文件所在位置
show variables like '%datadir%';