mysql刷入磁盘_关于控制mysql的binlog日志刷入磁盘频率的参数理解

最近一直执迷于mysql的binlog日志刷入磁盘频率的几个参数,一直无法完全理解清楚,今天反复的看官方文档,并且将看到的心得记录一二。

先说个概念:

数据脏页:当mysql的内存数据页和磁盘的数据不一致的时候,内存的数据,就叫做脏数据,刷盘的过程就是刷脏页。

【关于控制binlog刷入磁盘的参数】

1.sync-binlog:控制binlog刷入磁盘的频率

default vaule:1

0:禁止MySQL服务器将二进制日志同步到磁盘。相反,MySQL服务器依赖于操作系统不时地将二进制日志刷新到磁盘,就像处理其他文件一样。此设置提供了最佳性能,但是在出现电源故障或操作系统崩溃时,服务器可能提交了未同步到二进制日志的事务。

1:允许在事务提交之前将二进制日志同步到磁盘。这是最安全的设置,但是由于磁盘写操作的增加,可能会对性能产生负面影响。在出现电源故障或操作系统崩溃时,二进制日志中缺少的事务仅处于准备状态。这允许自动恢复例程回滚事务,从而保证二进制日志中没有丢失任何事务。

N:其中N是0或1之外的值:在收集了N个二进制日志提交组之后,将二进制日志同步到磁盘。在出现电源故障或操作系统崩溃时,服务器可能提交了未刷新到二进制日志的事务。由于磁盘写操作数量的增加,该设置可能会对性能产生负面影响。值越大,性能越好,但是数据丢失的风险越大。

2.innodb-flush-log-at-trx-commit:(控制redo log刷新到磁盘)控制提交操作的严格的ACID遵从性和更高的性能之间的平衡,当提交相关的I/O操作被重新安排并成批执行时,可以获得更高的性能。通过更改默认值可以获得更好的性能,但是在崩溃时可能会丢失事务。

default vaule:1

1: 默认设置为1是完全符合ACID要求的。日志在每次事务提交时被写入并刷新到磁盘。

0:设置为0时,每秒将日志写入并刷新到磁盘一次。没有刷新日志的事务可能在崩溃中丢失。

2:如果设置为2,则在每个事务提交之后写入日志,并每秒刷新一次磁盘。没有刷新日志的事务可能在崩溃中丢失。

以上两个参数都是关于binlog刷入到磁盘,默认是设置成双一是最安全的,在系统崩溃的时候,数据不会丢失的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值