MySQL双1参数innodb_flush_log_at_trx_commit、sync_binlog和两阶段提交

一、双1参数

1、innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit这个参数控制MySQL在事务提交时将内存中的Redo log file从Redo log buffer刷新到磁盘(Redo log file)的方式。

value: 0 1 2

10

每秒钟将内存中Redo log File从Redo Log Buffer刷新到OS Buffer并调用fsync()将OS Buffer刷新到磁盘(数据库宕机时,可能会有数据丢失)

21

默认为1,表示每次事务提交时会将Redo Log File从Redo Log Buffer中刷新到OS Buffer,并且会调用fsync()将OS Buffer刷新到磁盘(数据库宕机时,不会有数据丢失)

32

每次事务提交时会将内存中Redo Log File从Redo Log Buffer中刷新到OS Buffer,每秒钟调用fsync()将OS Buffer刷新到磁盘(数据库宕机时,可能会有数据丢失)

2、sync_binlog

sync_binlog参数控制将内存中binlog从binlog buffer中刷新到磁盘的方式

value : 0 1 N

10

由OS决定什么时候调用fsync()来将内存中binlog file从binlog buffer刷新到磁盘(binlog file).

21

每次事务提交时,将内存中binlog file从binlog buffer中刷新到磁盘(binlog file).


3)N

每N次事务提交时,将内存中的binlog file从binlog buffer中刷新到磁盘(binlog file).

注:binlog buffer满的时候会自动调用fsync()同步binlog buffer到磁盘(binlog file).

二、两阶段提交

MySQL采用两阶段提交的方式来保证有数据库变更的时候写入Redo Log File和Binlog File数据的一致性.

1、Redo Write
2、Redo prepare(fsync())
3、Binlog Write 
4、Redo Commit
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值