启用组提交会丢数据?
回答: 启用组提交会不会丢数据,这个和没有组提交这个功能是一样的情况
主要看是sync_binlog参数和 innodb_flush_log_at_trx_commit是怎么样设置的
innodb事务提交WAL日志先行,都需要先记录事务对应的日志,
在innodb后台线程在异步去把脏页刷到磁盘上
sync_binlog=0/1/N ; innodb_flush_log_at_trx_commit=0/1/2
不同的配置的组合,只是把事务产生的日志提交到不同的地方, 没有组提交之
前是一个事务对应的日志提交到日志缓存上,或者磁盘上的日志文件上
,有组提交后是一组事务对应的日志,提交到日志缓存文件,或者直接到磁盘上。
比如,一个update 操作 提交了 如果不是双 1 的情况,事务提交了 日志提交后没有持久化到 磁盘文件上
而是在内存文件中,这个update操作产生的脏页还在IBP中的 flush list 中,是异步刷到磁盘上的,这个时候如果异常宕机了
不是双 1 的情况下 日志还在内存文件中 ,IBP中脏页也没有了 持久化到磁盘这个时候数据就丢了
这个情况下 ,没有组提交可能是丢一个事务,使用组提交可能的丢一组事务; |