mysql事务
事务日志先行
事务本质:行级锁(排它锁 共享锁)
持久性 数据写入磁盘
undolog (撤销日志)
redolog (记录事务操作日志)
Innodb_log_Buffer 日志缓存
show engine innodb status
innodb_flush_log_at_trx_commit 0 1(默认) 2
当设置为0,该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
当设置为1,该模式是最安全的, 但也是最慢的一种方式。在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。
当设置为2,该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。
innodb_flush_log_at_trx_commit = 0 :每秒将日志缓冲区写入log file,并同时flush到磁盘。跟事务提交无关。在机器crash并重启后,会丢失一秒的事务日志数据(并不一定是1s,也许会有延迟,跟操作系统调度有关)。
innodb_flush_log_at_trx_commit = 1:每次事务提交将日志缓冲区写入log file,并同时flush到磁盘。(crash不会丢失事务日志)
innodb_flush_log_at_trx_commit = 2:每次事务提交将日志缓冲区写入log file,每秒flush一次到磁盘。(crash有可能丢失数据)
本作品采用《CC 协议》,转载必须注明作者和本文链接