MySQL基础8——MVCC,redo,undo

多版本并发控制;用来实现一致性的非锁定读;非锁定读是指不需要等待访问的行

MySQL基础8——MVCC,redo,undo

多版本并发控制;用来实现一致性的非锁定读;非锁定读是指不需要等待访问的行上X锁的释放;

在 read committed 和 repeatable read下,innodb使用MVCC;然后对于快照数据的定义不同;

在 read committed 隔离级别下,对于快照数据总是读取被锁定行的最新一份快照数据;而在

repeatable read 隔离级别下,对于快照数据总是读取事务开始时的行数据版本;

为什么读取快照数据不需要上锁?

因为没有事务需要对历史的数据进行修改操作;

redo

redo 日志用来实现事务的持久性;内存中包含 redo log buffer,磁盘中包含 redo log file;

当事务提交时,必须先将该事务的所有日志写入到重做日志文件进行持久化,待事务的commit操

作完成才完成了事务的提交;

redo log 顺序写,记录的是对每个页的修改(页、页偏移量、以及修改的内容);在数据库运行

时不需要对 redo log 的文件进行读取操作;只有发生宕机的时候,才会拿redo log进行恢复;

undo

undo 日志用来帮助事务回滚以及MVCC的功能;存储在共享表空间中;undo 是逻辑日志,回滚

时将数据库逻辑地恢复到原来的样子,根据 undo log 的记录,做之前的逆运算;比如事务中有

insert 操作,那么执行 delete 操作;对于 update 操作执行相反的 update 操作;

同时 undo 日志记录行的版本信息,用于处理 MVCC 功能;

发布者:admin,转转请注明出处:http://www.yc00.com/web/1691239603a518969.html

相关推荐

  • MySQL基础8——MVCC,redo,undo

    多版本并发控制;用来实现一致性的非锁定读;非锁定读是指不需要等待访问的行

    2023-8-5
    150
  • DM8:达梦数据库REDO日志损坏修复

    DM8:达梦数据库REDO日志损坏修复环境介绍1 启动数据库报错 CODE-7232 查看原实例(5237)初始化参数3 初始化相同参数的新数据库启停新库4 使用 dmmdf 工具 查看帮助5 查看原库(5237)的 db_magic6 修

    1月前
    220

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信