技术文摘
MySQL 中 binlog、redolog、undolog 的区别
MySQL 中 binlog、redolog、undolog 的区别
在 MySQL 数据库的运行机制中,binlog、redolog 和 undolog 起着关键作用,理解它们之间的区别对于深入掌握 MySQL 数据库原理和优化至关重要。
binlog(二进制日志) binlog 主要用于记录数据库中数据变更的逻辑操作。它记录了诸如 INSERT、UPDATE、DELETE 等对数据进行修改的语句。binlog 是一种逻辑日志,记录的是数据库层面的操作。它的主要作用是用于主从复制,主库将 binlog 发送给从库,从库通过重放这些日志来保持与主库的数据一致性。在数据库恢复时,如果需要基于时间点进行恢复,binlog 也能发挥重要作用。它不记录查询语句,只关注数据的变更。
redolog(重做日志) redolog 是物理日志,记录的是数据库物理层面的修改。比如某一页数据的修改。它的存在是为了确保在数据库发生故障后能够进行恢复。当数据库执行一个事务时,会先将修改操作记录到 redolog 中,然后再更新内存中的数据。这样即使在事务提交过程中数据库崩溃,在重启时也能通过 redolog 中的记录将数据恢复到事务提交后的状态,保证事务的持久性。
undolog(回滚日志) undolog 用于事务的回滚操作。在事务进行过程中,如果出现错误或者用户执行 ROLLBACK 语句,undolog 会发挥作用。它记录了事务开始前数据的原始状态,当需要回滚时,可以根据 undolog 中的记录将数据恢复到事务开始前的样子。undolog 同时还用于实现事务的隔离性,通过记录数据的旧版本,在并发访问时可以为不同事务提供数据的一致性视图。
总体而言,binlog 侧重于数据变更的逻辑记录,用于主从复制和基于时间点的恢复;redolog 着重于保证事务的持久性,确保故障恢复;undolog 则主要用于事务的回滚和支持事务隔离性。这三种日志在 MySQL 数据库中各司其职,共同保障了数据库的高效、稳定和数据的一致性。
- 这位小哥开源的短视频处理工具,助你玩转视频!
- 多运行时的微服务架构实践探索
- Spring Boot 实现邮件与附件发送 实用指南
- 新计算机技能需求排名:Python 位居第 3,第 1 令人意外
- 谷歌量子计算风云突变:关键人物 John Martinis 辞职
- Spring Cloud 微服务架构的详细剖析
- 高德纳表示《编程艺术》完结时间不定
- JavaScript 中发出 HTTP 请求的多种方法大对决
- REST API 设计中参数与查询的优秀实践
- 2020 年 DevOps 自动化的六种变化方式
- 实体类属性映射不可或缺之物
- 清华大学自动化系 2020 C++大作业成热门话题 网友:可直接入职 BAT
- Python 函数式编程教程:一行代码解决一切
- 企业微服务架构设计与实施的六大难点深度剖析实战分享
- 拜托,别再提及贪心算法!