美文网首页
数据库事务的四大特性---原子性(undo log)

数据库事务的四大特性---原子性(undo log)

作者: wyn_做自己 | 来源:发表于2022-04-26 15:34 被阅读0次

今日份鸡汤:为什么听过很多道理,却依然过不好这一生,因为,道理不会赋予你捷径,他只会让那些一直在一步一步往前走的人,过上比昨天更好的人生~

定义:

一个事务是一个不可分割的单位,是一个最小的操作单元,这些操作要么全成功,要么全失败,如果事务中的一个sql语句执行失败了,那么已经执行成功的sql语句要回滚,回滚到事务之前的状态。

实现原理:

主要基于undo log(日志),MySQL有很多日志,比如说二进制日志、错误日志、查询日志、慢查询日志等,innodb存储引擎提供了两种事务日志:redo log、undo logundo log就是实现原子性的原理。原子性体现在sql回滚上,如果执行sql报错了,会执行回滚,回滚到执行之前的状态。那么我们怎么回到回滚之前的状态呢?我们就需要把执行之前的一个状态记录下来,那么如果一旦这个sql语句发生错误之后,我们就可以回到我们之前的状态。类似于我们上线,如果这个版本在线上出问题了,那我们就会立刻把版本回退到之前没有问题的那个版本,他们原理一样,就是我一定要知道上一个正确的版本是什么,当这个事务对数据库进行修改的时候,innodb就会生成对应的undo log,他会记录这个sql执行的相关信息,如果sql执行失败,发生回滚,innodb就会根据undo log的内容去做相反的工作,比如说我执行了一个insert操作,那么回滚的时候呢,就会执行相反的操作,就是delete。如果我之前执行的是一个delete操作呢,那么回滚的时候,就会执行一个相反的insert操作。对于update我回滚的时候,会执行一个相反的update,把数据再改回去,那么这些操作的执行呢,都是基于这个undo log,要把这些sql语句的执行信息记录在日志里面,这样的话,在需要回滚的时候,我们就可以回滚了。

相关文章

  • mysql事务/事务隔离级别/封锁协议

    1.事务的四大特性(ACID)1)原子性一个事务中的操作要么全部都做,要么全部都不做mysql通过undo log...

  • Innodb中的undo log

    Innodb实现事务的原子性时,使用的是undo log,当事务失败时,就使用undo log回滚事务的修改。 使...

  • undo log为什么需要持久化?

    undo log用来实现事务的原子性,保障事务出现错误的时候,数据恢复到开始的状态 问题 为什么undo log需...

  • mysql 里面的日志

    一.Undo log : 事务原子性实现原理,当一个事务,某个地方出错了,或者进行了回滚,就要用到Undo log...

  • 69-MySQL-事务日志

    一、事务4大特性 1.1、原子性 事务的原子性由事务的 redo 日志和undo 日志来保证 1.2、一致性 事务...

  • 数据库事务的四大特性

    数据库事务的四大特性 1、原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部...

  • 数据库事务的四大特性以及事务的隔离级别

    数据库中事务的四大特性(ACID) ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要...

  • Spring事务管理

    事务的四大特性(ACID)1、原子性(Atomicity):事务具有原子性的特征表现为:一个事务对数据库的操作,要...

  • 数据库事务的四大特性---原子性(undo log)

    今日份鸡汤:为什么听过很多道理,却依然过不好这一生,因为,道理不会赋予你捷径,他只会让那些一直在一步一步往前走的人...

  • mysql 面试整理

    MySQL 事务特点,事务类型? 事务的特点:原子性:要么执行成功要么执行失败。实现主要是以undo log隔离性...

网友评论

      本文标题:数据库事务的四大特性---原子性(undo log)

      本文链接:https://www.haomeiwen.com/subject/gantyrtx.html