- MySQL Server Administration
- The MySQL Server
- Server System Variables
- The MySQL Server
该变量用于限制数据的导入导出操作,比如:
- LOAD_DATA 语句
- SELECT ... INTO OUTFILE 语句
- LOAD_FILE() 语句
- The InnoDB Storage Engine
- InnoDB Startup Options and System Variables
innodb_flush_log_at_trx_commit
参数作用:控制严格服从 ACID 与高性能之间的平衡。.
在阅读下面的文字之前,可以先了解这里。
在 MySQL 写日志的时候,可以看成两部分:
- write: 将 log buffer 的数据写入磁盘内存映射(一块由 OS 管理的区域)
- flush: 将磁盘内存映射的数据 flush 到磁盘
该参数可取 3 种值:0、1、2。
innodb_flush_log_at_trx_commit = 1
这是默认模式,严格服从 ACID。
每次事务提交时 MySQL 都会执行 write + flush。
该模式是最安全的,但也是最慢的一种方式。在 mysqld 服务崩溃或者服务器主机崩溃的情况下,binary log 只有可能丢失最多一个语句或者一个事务。如果是 autocommit = 1,那么就是丢失一个语句。
innodb_flush_log_at_trx_commit = 0
MySQL 每秒一次地执行 write + flush。该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
该模式速度最快,但不太安全,mysqld 进程的崩溃或者操作系统的崩溃都会导致上一秒钟所有事务数据的丢失。
innodb_flush_log_at_trx_commit = 2
每次事务提交时 MySQL 都会执行 write,但是 flush 操作以每秒一次的频率执行。
该模式速度较快,也比 0 安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。
相关资料可以查看:
关于 Linux 同步 IO:blog.csdn.net/zhouxinlin2…