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

【编程底层原理】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.kler.cn/news/311611.html

相关文章:

  • Nexpose 6.6.269 发布下载,新增功能概览
  • Apache Hudi现代数据湖核心技术概论
  • 【Elasticsearch系列十四】Elasticsearch
  • C++ | Leetcode C++题解之第419题棋盘上的战舰
  • 深度解析ElasticSearch:构建高效搜索与分析的基石原创
  • 一问详解Unity下RTMP推送|轻量级RTSP服务|RTSP|RTMP播放模块说明
  • Perfetto slice提示App Deadline Missed
  • TMStarget学习——Functional Connectivity
  • 如何免费调用GPT API进行自然语言处理
  • 【毕业设计】基于 PHP 开发的社区交流系统
  • MySQL迁移达梦,两个数据库的不同之处,需要修改的地方有哪些(持续更新)
  • 【Tourism】Yuncheng(3)
  • 房屋租赁系统源码分享:SpringBoot + Vue 免费分享
  • [产品管理-22]:NPDP新产品开发 - 20 - 产品设计与开发工具 - 开发、制造、装配阶段
  • 小琳AI课堂 探索强化学习:通过Python迷宫示例掌握Q-learning算法
  • 安卓玩机工具-----多设备同时投屏操控的安卓手机设备投屏工具 工作室推荐
  • 记忆化搜索
  • 【乐企-工具篇】ofd转pdf(解决字体问题)
  • Exchange Online 计划 2 部署方案
  • 基于SSM的宿舍管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)
  • 代码随想录算法训练营第51天 | 岛屿数量、岛屿的最大面积
  • 简单说说MySQL中 SELECT 语句执行流程
  • 最新动态一致的文生视频大模型FancyVideo部署
  • 【MySQL】MySQL 在 Centos 7环境安装
  • Hive自定义函数——简单使用
  • C#广泛应用的简洁匿名函数Lambda 表达式
  • 基于Python的自然语言处理系列(12):使用TorchText和LSTM进行序列到序列(seq2seq)翻译
  • LVGL 控件之仪表盘(lv_meter)
  • Learn ComputeShader 15 Grass
  • 【JVM】垃圾回收