mysql undo log、redo log、binlog、mvcc、Buffer Pool的关系

这篇具有很好参考价值的文章主要介绍了mysql undo log、redo log、binlog、mvcc、Buffer Pool的关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、作用

        MySQL中的undo log、redo log、binlog和MVCC(多版本并发控制)是数据库管理系统中的

重要概念,它们各自有不同的作用和关系。

  • Buffer Pool(缓冲池):文章来源地址https://www.toymoban.com/news/detail-785539.html

    • 作为InnoDB存储引擎的核心组件,Buffer Pool用于缓存从磁盘读取的数据页。所有的数据修改首先发生在内存中的缓冲池里,而不是直接写入磁盘。
  • Undo Log(撤销日志):
    • Undo log是用于撤销已执行的事务的日志。
    • 如果事务需要回滚,可以通过撤销日志将数据回滚到事务开始之前的状态。
    • 另外,Undo log也用于MVCC,以支持非锁定读取。
  • Redo Log(重做日志):
    • Redo log是一种持久化日志,用于确保事务的持久性。
    • 当事务对数据库进行修改时,这些修改首先被记录在redo log中,然后再异步地刷新到磁盘上的数据文件中。
    • 如果系统突然崩溃,重启时可以重新执行redo log中的操作,确保数据的完整性。
  • Binlog(二进制日志):
    • Binlog是MySQL的二进制日志系统,用于记录数据库的所有更改操作。
    • 它主要用于复制和恢复操作,例如主从复制和点时间恢复。
    • Binlog记录了SQL语句的具体内容和执行顺序,可以用于复制和恢复操作。
  • MVCC(多版本并发控制):
    • MVCC是一种并发控制的方法,允许多个事务同时读取同一数据,而不需要加锁。
    • 通过保存数据的不同版本,MVCC可以支持非锁定读取,提高并发性能。
    • Undo log在MVCC中用于保存旧的数据版本,以便其他事务可以读取旧的数据版本而不需要等待当前事务完成。

2、关系

  • Undo log、redo log、binlog和MVCC都是数据库管理系统中的重要组件,它们共同协作以实现数据库的高可用性、高性能和数据一致性。
  • 在InnoDB存储引擎中,redo log和undo log是紧密相关的。当事务对数据进行修改时,首先将修改记录在redo log中,同时也会生成相应的undo log。如果系统突然崩溃,重启时可以通过redo log进行重做操作,同时也可以使用undo log进行撤销操作。
  • Binlog与redo log和undo log也有关系。在将数据修改刷新到数据文件之前,先记录到redo log中,然后再通过binlog将相应的SQL语句记录到二进制日志中。这样,在主从复制或点时间恢复等场景中,可以利用binlog进行相应的操作。
  • MVCC与undo log也有关系。通过undo log,MVCC可以保存旧的数据版本,实现非锁定读取,提高并发性能。
  • Redo Log的写前日志(Write-Ahead Logging, WAL)策略:在Buffer Pool中修改数据后,不立即将数据写入磁盘,而是先将修改记录在Redo Log中,然后再由后台线程异步地将数据刷新到磁盘上。这种写前日志策略可以减少直接对磁盘进行写操作的次数,提高数据库的性能。

到了这里,关于mysql undo log、redo log、binlog、mvcc、Buffer Pool的关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL 三大日志(bin log、redo log、undo log)

    redo log (重做日志) 是 InnoDB 存储引擎独有的,它让 MySQL有了崩溃恢复的能力,是事务中实现 持久化的重要操作 比如 MySQL 实例宕机了,重启时, InnoDB 存储引擎会使用 redo log 恢复数据,保 证数据的持久性与完整性 。 MySQL 中数据时以页为单位,查询一条记录,会从硬盘中把该

    2024年02月07日
    浏览(39)
  • Mysql日志redo log、bin log、undo log 区别与作用及二阶段提交

    重做日志 作用:确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。 内容:物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中

    2024年02月03日
    浏览(29)
  • MySQL日志之binlog,redo log

    目录 1.binlog 概念: 作用: 格式: 写入操作: 2.redo log 概念: 作用: redo log在MySQL操作数据时的实现: 查询时: 更新时: 写入操作: 概念: 刷盘策略: 自动刷盘操作: binlog,记录所有语句的更新操作(即只要增删改,不包含查) 同步数据,保证 数据的一致性 statement:

    2024年02月16日
    浏览(28)
  • MVCC和undo log

    MVCC 是多版本并发控制(Multi-Version Concurrency Control,简称MVCC),是MySQL中基于 乐观锁 理论实现隔离级别的方式,用于实现已提交读和可重复读隔离级别的实现,也经常称为多版本数据库。MVCC机制会生成一个数据请求时间点的 一致性数据快照 (Snapshot), 并用这个快照来提供

    2024年02月09日
    浏览(29)
  • 面试官问我为啥B+树一般都不超过3层?3层B+树能存多少数据?redo log与binlog的两阶段提交?

    我今天逛了一下CSDN,又发现了一条显眼的数据,大概是说 3层B+树足以容纳2000w条数据 。我当时就蒙了,3层对2000w,心想这B+树也太厉害了吧,由此勾起了我求知的欲望,我一定要搞明白他这2000w是怎么来的。 MySQL的执行流程如下图 前提: binlog本身不具备crash-safe能力 ,所以

    2024年02月11日
    浏览(29)
  • SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗

    开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,SQL Server,Redis ,Oracle ,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加微信号 liuaustin3 (共1250人左右 1 + 2 + 3 +4)新人会进入3群 (3群准备关闭自由申请) 每天

    2024年02月09日
    浏览(26)
  • 02_重要的两个日志 redo log 和 binlog

    MySQL 45 讲Note: 课程专栏名称:《MySQL实战45讲》课程 笔记参考:MYSQL45 讲 想要理解这两个日志 redo log 和 binlog ;我们需要对MySQL 的备份恢复机制有一个基本的了解。 之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,带着好奇的态度,这是怎样做到的呢

    2024年02月07日
    浏览(30)
  • innodb_log_file_size 和 innodb_buffer_pool_size

    innodb_log_file_size 和 innodb_buffer_pool_size 是 MySQL 数据库中 InnoDB 存储引擎的两个重要配置参数。它们对数据库的性能和可靠性有着显著的影响。 innodb_log_file_size 参数用于指定 InnoDB 重做日志文件(redo log files)的大小。重做日志是 InnoDB 用来保证事务的持久性和数据库的恢复能力

    2024年03月19日
    浏览(27)
  • 一文读懂MySQL7大日志(slow、redo、undo、bin、relay、general、error)

    用于记录执行时间超过指定值的 SQL 语句的详细信息,多用于调试和监控。 因为开启会略微影响性能,所以默认没有开启,所以需要配置。 重做日志,记录了数据库中发生的每次修改,如增、删、改、对数据页的更改。这些修改被记录在 redo 日志中,以便在数据库崩溃或意外

    2024年03月09日
    浏览(50)
  • MySQL - Buffer Pool

    Buffer Pool 主要用于缓存数据库表的数据页,以提高数据库的读取性能: 缓存数据页 :Buffer Pool 是 MySQL 中用于缓存数据页的内存区域。数据页通常包含数据库表的数据,如行记录等。当查询或读取数据时,MySQL会首先查看Buffer Pool中是否已经缓存了相应的数据页。如果数据页在

    2024年02月07日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包