binlog的刷盘策略

mysql只有在事务提交的时候才会记录binlog日志,此时日志还在内存中,那binlog是什么时候被刷到磁盘中的呢?
mysql通过sync_binlog控制刷盘,取值范围0~n
0:不强制要求刷盘,由系统自行判断什么时候将binlog写入磁盘;
1:每次提交事务就将binlog写入磁盘;
n:每提交n个事务将binlog写入磁盘;

  • 显然,sync_binlog为1是最安全的,每次提交事务就将binlog写入磁盘,数据一致性最好。但实际情况中,往往为了提高数据库的性能,会将sync_binlog适当设大,来减少磁盘IO次数,用数据一致性换性能。
  • 在对数据库一致性要求不高或数据没那么重要的业务场景,完全可以把sync_binlog设置在100~1000范围内的某个值,以此来提高数据库的性能。而在对数据一致性要求高的业务场景或特别重要的数据,比如订单则建议将sync_binlog的值设置为1,这样可以保证哪怕数据库挂了也不会丢失数据。
  • sync_binlog的默认值是0,这时由系统会自行判断将binlog写入磁盘的时机。数据库可能会在空闲的时候综合考虑缓存的binlog日志大小来决定是否要将binlog写入磁盘。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值