mysql是怎么保证数据不丢失_mysql是怎么保证数据不丢失的

一:binlog写入机制。

13585bdcf36c5d5900aa5cc2032910bb.png

先write ,把日志写入文件系统的的page cache ,然后fsync 将数据持久化到磁盘的操作。

binlog是每个线程一个binlogCache,binlogCache中包含tmpfile和memery.

二:redo log 写入机制

188ca7270b4dd6be8e9db29e8e286615.png

首先日志写道redologbuffer中,然后写入pagecache ,最后写入磁盘。

有个后台线程每一秒钟轮询redobuffer写入磁盘,一个没有提交事务的redolog也可以持久化到磁盘。

1,redolog buffer 占用的空间即将到达 innodb_log_buffer_size 一半。后台线程主动写盘

2.并行的事务提交,顺带将这个事务的redo log buffer 持久化到磁盘。

因为奔溃回复依赖prepare的redo log 再加上binlog来恢复的。innodb就认为redo log 在commit 的时候就不需要fsync了,只会write .

c5e90f64be4bd7e95ad8820ede4e90e0.png

c57c44e87cd3e285dc45d1eb31dbf145.png

894c0c23f06198ca55332cc166f0c542.png

上边是mysql的组提交机制。

7aa48dcec9a7609c540ea26d9d1b703d.png

这是mysql的wal机制如何写日志的。

经过上边的分析,如何mysql 有性能瓶颈,在io上。有哪些方法提升性能?

d0d698548a1cc956044403d7e1031aae.png

原文:https://www.cnblogs.com/hanguocai/p/10223871.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值