技术文摘
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 数据库中各司其职,共同保障了数据库的高效、稳定和数据的一致性。
- Visual Studio 2019 安装程序背景图绿帽子被指为 bug
- “假设”家族大揭秘!科学假设、统计假设与机器学习假设的正确区分之道
- Serverless 风暴降临,前端工程师的应对之策
- Web 性能优化:利用缓存 React 事件提升性能
- Node.js 新手教程:构建静态资源服务器
- 前端异常的优雅处理之道
- JavaScript 与 CSS 常用工具方法的封装
- 十种免费的 Web 压力测试工具
- 每个技术开发团队都会面临的 4 个难题总结
- 库克带来的令人吃惊的苹果新品或许是它
- 京东服务市场在高并发下的 SOA 服务化演进架构
- 2019 年 11 个应深入探究的 Javascript 机器学习库
- Webpack 构建速度的性能优化
- 什么是互联网架构“高可用”
- 通俗易懂的知识图谱技术应用落地指南