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

【编程底层原理】mysql的redo log undo log bin log日志的作用,以及何时生成,涉及到哪些参数变量

MySQL中的redo log、undo log和bin log是三种重要的日志,它们在数据库事务处理、数据持久性和复制等场景中发挥着关键作用。

1. Redo Log(重做日志)

    • 作用:Redo log用来保证事务的持久性。当数据库发生故障时,可以使用redo log来恢复数据到最后一次提交的状态。它记录了数据页的物理修改,即事务对数据页所做的更改。
    • 何时生成:在事务执行过程中,每当有数据页被修改时,对应的redo log就会被生成,并存储在内存中的redo log buffer里。
    • 参数变量: - innodb_log_buffer_size:控制redo log buffer的大小。 - innodb_flush_log_at_trx_commit:控制事务提交时redo log的刷盘行为,可以设置为0、1或2。 - innodb_log_file_size:定义单个redo log文件的大小

2. Undo Log(回滚日志)

    • 作用:Undo log用于事务的原子性和MVCC(多版本并发控制)。如果事务需要回滚或数据库崩溃,undo log可以用于恢复原始数据。同时,它支持在读取操作中提供数据的旧版本,使得在高并发环境下,不同的事务可以看到数据的不同版本。
    • 何时生成:在事务开始时创建,事务的每个修改操作都会生成undo log。
    • 参数变量: - 没有特定的参数直接控制undo log的大小,但它受innodb_buffer_pool_size的影响,因为undo log存储在buffer pool中。

3. Binlog(二进制日志)

    • 作用:Binlog是MySQL服务器层的日志,用于记录所有数据库表结构变更和数据修改的日志(不包括SELECT和SHOW这类操作)。它主要用于数据的复制和恢复。
    • 何时生成:在事务提交时生成,记录了该事务期间所有修改数据的操作。
    • 参数变量: - expire_logs_days:设置binlog文件的过期天数。 - max_binlog_size:定义单个binlog文件的最大大小。 - sync_binlog:控制每次事务写入binlog后是否进行fsync同步到磁盘。

4.总结

这些日志共同工作,确保了MySQL数据库的稳定性和数据的一致性。Redo log和undo log是InnoDB存储引擎特有的日志,而binlog则是MySQL服务器层的日志,它们之间的区别主要在于作用、生成时机和适用对象。


http://www.mrgr.cn/news/30703.html

相关文章:

  • 详解JESD204B子类一的确定性延时(JESD20B三)
  • 无会员的办公技巧——office
  • 必知的PDF转换软件:看2024大学生如何选择
  • 全球视角下的IT产业新挑战与机遇
  • 深入理解Lucene:开源全文搜索引擎
  • Study Plan For Algorithms - Part34
  • 24年蓝桥杯及攻防世界赛题-MISC-2
  • 如何在Java中实现高效的对象映射:Dozer与MapStruct的比较与优化
  • 【Python百日进阶-Web开发-FastAPI】Day803 - FastAPI的路径参数
  • 关于单片机的技术原理及应用
  • Solidwork角度尺寸标注
  • 大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元
  • Python | Leetcode Python题解之第419题棋盘上的战舰
  • Stable Diffusion绘画 | ControlNet应用-IP-Adapter:一致性角色就这么简单
  • 记录一题----计算机网络传输层
  • 基于java的工费医疗报销管理系统设计与实现
  • 道路红外目标检测数据集 6500张 带标注 voc yolo
  • golang学习笔记30——golang 中代码仓库的 h1 和 go.mod h1 不一致的修正方法
  • C++ | Leetcode C++题解之第419题棋盘上的战舰
  • SharePoint Online 计划 1 部署方案