当前位置: 首页 > ai >正文

Mysql的redolog

  • 保证事务持久性,用于崩溃恢复,崩溃恢复时,把redo上记载的页读到内存,对其修改,变为脏页,刷盘
  • 运用于WAL技术,将随机写改为顺序写

redo log有三种状态:

  1. 存在 redo log buffer 中,物理上是在 MySQL 进程内存中
  2. 写到内核中的一片缓冲区 (write),但是没有持久化(fsync) 到硬盘,物理上是在文件系统的 page cache 里面
  3. 持久化到磁盘

 

innodb_flush_log_at_trx_commit 参数,它有三种可能取值:

  1. 设置为 0 的时候,表示每次事务提交时都只是把 redo log 留在 redo log buffer 中 (啥也不干,纯靠后台线程帮忙持久化);
  2. 设置为 1 的时候,表示每次事务提交时都将 redo log 直接持久化到磁盘write + fsync
  3. 设置为 2 的时候,表示每次事务提交时都只是把 redo log 写到 page cachewrite

事务还没提交,redo会被持久化到硬盘吗?

  1. 第一种情况:InnoDB 有一个后台线程,每隔 1 秒轮询一次,具体的操作是这样的:调用 write 将 redolog buffer 中的日志写到文件系统的 page cache,然后调用 fsync 持久化到磁盘。而在事务执行中间过程的 redolog 都是直接写在 redolog buffer 中的,也就是说,一个没有提交的事务的 redolog,也是有可能会被后台线程一起持久化到磁盘的。
  2. 第二种情况:假设事务 A 执行到一半,已经写了一些 redolog 到 redolog buffer 中,这时候有另外一个事务 B 提交,按照 innodb_flush_log_at_trx_commit = 1 的逻辑,事务 B 要把 redolog buffer 里的日志全部持久化到磁盘,这时候,就会带上事务 A 在 redolog buffer 里的日志一起持久化到磁盘,(redolog buffer事务共享)
  3. 第三种情况:redo log buffer 占用的空间达到 redolog buffer 大小(由参数 innodb_log_buffer_size 控制,默认是 8MB)一半的时候,后台线程会主动写盘。不过由于这个事务并没有提交,所以这个写盘动作只是 write 到了文件系统的 page cache,仍然是在内存中,并没有调用 fsync 真正落盘

redo log 记录了此次事务「完成后」的数据状态,记录的是更新之后的值;

undo log 记录了此次事务「开始前」的数据状态,记录的是更新之前的值;

http://www.xdnf.cn/news/1146.html

相关文章:

  • 【inlining failed in call to always_inline ‘_mm_aesenclast_si128’】
  • Python线程全面详解:从基础概念到高级应用
  • C++ 的 输入输出流(I/O Streams)
  • 课时一 平面机构的自由度与速度分析(上)
  • 学车经验2 倒库+欧卡2开车经验
  • Pandas基础学习分析处理nginx日志
  • MySql进阶
  • 【YOLOv8改进 - C2f融合】C2f融合SHViTBlock:保证计算效率的同时,能够有效地捕捉图像的局部和全局特征
  • 1.3 本书结构概览:从理论基础到实践案例的系统阐述
  • 4.22排序链表(几种排序算法比较)
  • 其它生成式(对比列表生成式)
  • 区间分组详解
  • 【C++】智能指针原理以及详细讲解shared_ptr精简版实现
  • 一个 HTTP 请求进入 Spring MVC 应用后,大致经历了哪些主要步骤?
  • 【C++】——入门基础(一)
  • 关于el-table可展开行实现懒加载的方案
  • 网易云IP属地可以查看城市吗?深度解析与使用指南
  • [创业之路-380]:企业法务 - 企业经营中,企业为什么会虚开増值税发票?哪些是虚开増值税发票的行为?示例?风险?
  • 使用 acme.sh 自动更新 SSL 证书的指南
  • 【Java面试笔记:基础】6.动态代理是基于什么原理?
  • el-popover实现下拉滚动刷新
  • C语言高频面试题——指针函数和函数指针的区别
  • 【Java面试笔记:基础】4.强引用、软引用、弱引用、幻象引用有什么区别?
  • 【c++深入系列】:万字string详解(附有sso优化版本的string模拟实现源码)
  • rpm命令详解
  • java的反编译命令
  • 小小矩阵设计
  • 重学React(一):描述UI
  • 【Python进阶】数据可视化:Matplotlib从入门到实战
  • 解码思维链:AI思维链如何重塑人类与机器的对话逻辑