本文是关于innodb_flush_log_at_trx_commit的设置的内容,下面是详细介绍。
0:日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,
但是在一个事务提交不做任何操作。
1:在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的
刷新。
2:在每个提交,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新。
对日志文件每秒刷新一次。网易技术部 67
默认值是 1,也是最安全的设置,即每个事务提交的时候都会从 log buffer 写
到日志文件,而且会实际刷新磁盘,但是这样性能有一定的损失。如果可以容忍在数
据库崩溃的时候损失一部分数据,那么设置成 0 或者 2 都会有所改善。设置成 0,则
在数据库崩溃的时候会丢失那些没有被写入日志文件的事务,最多丢失 1 秒钟的事
务,这种方式是最不安全的,也是效率最高的。设置成 2 的时候,因为只是没有刷新
到磁盘,但是已经写入日志文件,所以只要操作系统没有崩溃,那么并没有丢失数据 ,
比设置成 0 更安全一些。
在 mysql 的手册中,为了确保事务的持久性和复制设置的耐受性、一致性,都是
建议将这个参数设置为 1 的。