MySQL存储引擎 innodb_flush_log_at_trx_commit, sync_binlog,(双一标准+刷写策略)Innodb_flush_method

一、innodb_flush_log_at_trx_commit (存储引擎层 innodb特有

--查看参数
select @@innodb_flush_log_at_trx_commit;

innodb_flush_log_at_trx_commit=0 表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入文件系统缓存并且秒fsync磁盘一次;

innodb_flush_log_at_trx_commit=1  每次事物的提交都会引起日志文件写入、flush磁盘的操作,确保了事务的ACID;flush  到操作系统的文件系统缓存  fsync到物理磁盘.(默认)

innodb_flush_log_at_trx_commit=2  每次事务提交引起写入文件系统缓存,但每秒钟完成一次fsync磁盘操作。

二、sync_binlog  ( Server 层 日志指 bin_log 二进制日志 保证数据恢复 主从
该参数表示事务写入 binary log 并同步到磁盘的过程。
取值为0:存储引擎不进行binlog的刷新到磁盘,而由操作系统的文件系统控制缓存刷新。性能最佳(默认)

取值为1:每次事务提交后存储引擎调用文件系统的sync操作进行一次缓存的刷新,是最慢的,但是最安全

取值 =n:当进行n次事务提交后,存储引擎调用文件系统的sync操作进行一次缓存的刷新。

三、Innodb_flush_method(存储引擎层 innodb特有   刷写策略  日志指redo日志  突然发生意外 及时回滚数据 恢复内存中的脏页 

page buffer刷写通过Innodb_flush_method控制

Innodb_flush_method=fsync  日志和数据缓冲区写磁盘,都走OS buffer(默认)

Innodb_flush_method=O_DIRECT  数据缓冲区写磁盘,不走OS buffer 日志走os buffer

Innodb_flush_method=O_DSYNC 日志缓冲区写磁盘,不走 OS buffer  数据走osbuffer

三、使用建议

--最高安全模式
innodb_flush_log_at_trx_commit=1
Innodb_flush_method=O_DIRECT
--最高性能:
innodb_flush_log_at_trx_commit=0
Innodb_flush_method=fsync
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值