美文网首页
MySQL事务详解

MySQL事务详解

作者: 675ea0b3a47d | 来源:发表于2021-04-11 21:40 被阅读0次

一:什么是事务

事务:简单来说就是一组操作要么全部成功,要么全部失败,没有中间状态,

最常见的例子就是转账:小黑给小黄转账100快,如果只是小黑的账户减少100块,小黄的账户余额不增加,你觉得合理吗?
所以事务就是要么都成功,要么都失败

二:事务的特性(ACID)

1.原子性(Atomicity): 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
2.一致性(Consistency): 执行事务前后,数据保持一致,多个事务对同一数据的读取结果是相同的;
3.隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;
4.持久性(Durability): 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

三:脏读、丢失修改、不可重复读、幻读

1.脏读(Dirty read):读未提交,当一个事务A读取并修改一个数据,且没提交到数据库,但这个数据恰好被另一事务B读取,事务B读取的这个数据可能不是最终需要提交的数据,事务B拿着这个数据去做一些操作可能会出错;
2.丢失修改(Lost to modify):当一个事务A读取了一个数据后,事务B也读取了该数据,当事务A修改了这个数据之后,事务B也修改了该数据,事务A的修改被事务B的修改所覆盖,如事务A读取a=100,对其进行操作减去20,事务A提交之后a=80,当时事务B对a的操作是增加20,那么事务B提交之后a=120,事务A的修改被事务B所覆盖;
3.不可重复读(Unrepeatable Read):事务A在同一次事务中需要多次读取同一数据a,在事务A多次读取数据的间隙中事务B修改了数据a,导致事务A读取的数据不一致;
4.幻读(Phantom Read):幻读和不可重复读差不多,事务a读取了几行数据,事务B突然插入了几条数据,事务a重新读取时发现多了几条原本不存在的数据;

不可重复读的重点是修改:多次读取同一条记录发现其中某些列的值被修改;幻读的重点在于新增或者删除:多次读取发现记录增多或减少了。

三:事务的隔离级别
数据库定义了四种隔离级别,如下所示:

1:读未提交(READ-UNCOMMITTED):最低的隔离级别,允许读取尚未提交的数据变更, 可能会导致脏读、幻读或不可重复读。
2:读已提交(READ-COMMITTE):读取并发事务已经提交的数据, 可以阻止脏读,但是幻读或不可重复读仍有可能发生。
3:可重复读(REPEATABLE-READ):对同一字段的多次读取结果都是一致的,除非数据是被本身事务所修改, 可以阻止脏读和不可重复读,但幻读仍有可能发生。
4:串行化(SERIALIZABLE):最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰, 该级别可以防止脏读、不可重复读以及幻读。

MySQL InnoDb的默认级别是可重复读!

相关文章

  • MySQL 事务详解

    事务详解 注意:MyISAM 不支持事务,InnoDB支持事务,所以所有关于事务, 隔离级别,排它锁, 共享锁, ...

  • MySQL——事务详解

    事务特性ACID 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 1 原子性(Atomic...

  • mysql事务详解

    数据库事务 1.1数据库版本 Mysql8.0.12 1.2事务是由一组SQL语句组成的逻辑处理单元,事务具有以下...

  • MySQL事务详解

    一:什么是事务 二:事务的特性(ACID) 三:脏读、丢失修改、不可重复读、幻读 不可重复读的重点是修改:多次读取...

  • MySQL事务详解

    一、什么是事务   数据库中的事务(Transaction)指的是数据库中的一种执行数据库操作的一种机制,事务把一...

  • Net Core中数据库事务隔离详解——以Dapper和Mysq

    Net Core中数据库事务隔离详解——以Dapper和Mysql为例事务隔离级别准备工作Read uncommi...

  • Mysql 事务

    Mysql 事务及 MVCC 详解 ACID 四大特性 原子性(atomicity)一个事务操作看做一个做小的执行...

  • Innodb-MVCC详解

    Innodb-MVCC详解 借用高性能 MySQL 的几句话 MySQL 的大多数事务型存储引擎都不是简单的行级锁...

  • 锁-0

    一.事务是通过锁来绑定多条执行语句的 二.mysql 锁粒度是什么?详解:https://zhidao.baidu...

  • Spring之事务管理

    Spring事务管理(详解+实例)Spring详解(八)------事务管理 一. 概念 事务(Transacti...

网友评论

      本文标题:MySQL事务详解

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