mysql 查看并设置 innodb_flush_log_at_trx_commit 参数

Source

mysql 查看并设置 innodb_flush_log_at_trx_commit 参数

innodb_flush_log_at_trx_commit` 是 MySQL 中的一个系统变量,用于控制 InnoDB 存储引擎的日志刷新行为。该变量有三个可选的值:

  1. 0:每隔一秒钟,日志缓冲被刷新到日志文件,并且日志文件每隔一秒被刷新到磁盘,但是事务提交时不会进行检查。

  2. 1:默认值。每个事务提交时,日志缓冲被刷新到日志文件,并且日志文件被刷新到磁盘。

  3. 2:每个事务提交时,日志缓冲被刷新到os cache 日志文件,但是日志文件只每秒刷新到磁盘一次。

    提交事务的时候,把redo日志写入磁盘文件对应的os cache缓存里去,而不是直接进入磁盘文件,可

    能1秒后才会把os cache里的数据写入到磁盘文件里去。

    这种模式下,你提交事务之后,redo log可能仅仅停留在os cache内存缓存里,没实际进入磁盘文件,万一此时要

    是机器宕机了,那么os cache里的redo log就会丢失,同样会让人感觉提交事务了,结果数据却丢了。

## 查看当前的设置
SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
## 或者
SELECT @@global.innodb_flush_log_at_trx_commit;
## 修改这个设置
SET GLOBAL innodb_flush_log_at_trx_commit = 1;