事务还没提交的时候,redolog 能不能被持久化到磁盘?

首先,咱需要明白的是,啥是持久化?听起来高大上,换句简单的话来说,就是把数据写到磁盘上,也成为落盘。那为啥要做持久化到磁盘?目的就是可以在数据丢失后进行恢复,保证数据不丢失。那么对于 MySQL 来说,只要 binlog 和 redolog 都能正确持久化到磁盘上,就可以保证数据不丢失了。由此引出文题,不过在讲 redolog 之前,我们还是有必要先来说一下 binlog 的持久化操作。
**

binlog 持久化

**
这里引入了一个新的概念:binlog cache。从名字就能看出来,binlog cache 其实就是一片内存区域,充当缓存的作用。每个线程都有自己 binlog cache 区域,在事务运行的过程中,MySQL 会先把日志写到 binlog cache 中,等到事务真正提交的时候,再统一把 binlog cache 中的数据写到 binlog 文件中。(binlog cache 有很多个,binlog 文件只有一个!)事实上,这个从 binlog cache 写到 binlog 文件中的操作,并就是落盘操作了,这里仅仅是把 binlog 写到了文件系统的 page cache 上(这一步对应下图中的 write 操作)。

  • 简单解释下文件系统的 page cache:
    CPU 如果要访问外部磁盘上的文件,需要首先将这些文件的内容拷贝到内存中,由于硬件的限制,从磁盘到内存的数据传输速度是很慢的,如果现在物理内存有空余,干嘛不用这些空闲内存来缓存一些磁盘的文件内容呢&#x
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值