Mysql的事务原理

一、持久性

  依靠的是redo log,重做日志,记录的是事务提交时数据也的物理修改,是用来实现事务的持久性。

该日志文件由两部分组成,重做日志缓冲,(redo log buffer) 和重做日志文件(redo log file),前者是在内存中,后者是在磁盘中,当事务提交之后会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘发生错误时,进行数据恢复使用。

    *脏页:用户在执行增删改时,操作的是内存结构中的Buffer pool中的页, MYSQL会在一定时间内将内存中的页刷新到磁盘来实现持久性,已经被修改但是还没刷新到磁盘中的页叫脏页。

    *WAL:这种处理用到了WAL机制,先写日志,过一段时间再将内存缓冲区刷新到磁盘中

 

 

 

 二、原子性

  依靠的是undo log,回滚日志,用于记录数据被修改前的信息,作用包含两个:提供回滚和MVCC(多版本并发控制)。

  undo log和redo log记录物理日志不一样,它是逻辑日志。可以认为当delete-条记录时,undo log中会记录-条对应的insert记录,反之亦然,当update- 条记录时,它记录-条对应相反的update记录。当执行rollback时, 就可以从undo log中的逻辑记录读取到相应的内容并进行回滚。
  Undo log销毁: undo log在事务执行时产生,事务提交时,并不会立即删除undo log,因为这些日志可能还用于MVCC。
  Undo log存储: undo log采用段的方式进行管理和记录,存放在前面介绍的rollback segment回滚段中,内部包含1024个undo log segment。

posted @   wwwwwwwty  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示