技术文摘
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 数据库中各司其职,共同保障了数据库的高效、稳定和数据的一致性。
- Python 脚本可视化的惊人玩法!
- 告别 Flash 与臃肿框架!3 万 Star 开源工具助你提效
- 观察者模式与响应式的设计原理探究
- Vue.js 旗下 Web 视频播放器插件 vue-vam-video@1.3.6 今日发布
- 纯 CSS 打造旋转的金字塔
- 深入解析 CSS 边框(Border)的奥秘
- 前端:AJAX 请求重复使用的处理之道
- 从 Druid 迁移至 ClickHouse 的缘由
- 鸿蒙开发 AI 应用之 UI 篇(六)
- 郑爽张恒反目缘由:APP背后的风波
- React 与 DOM 之节点删除算法探秘
- Python 中 self 的四大秘密揭秘
- ES 2021 新特性抢先了解并附案例
- Spring Boot 与 Vue 前后端分离的两种文件上传方式汇总
- 2021 年,Python 开发者必知的 7 个 VS Code 扩展