面试冲刺:30---MySQL的事务隔离级别有哪几种?ACID是什么意思?

一、MySQL的事务隔离级别

  • 详情还可以参阅:
    • https://blog.csdn.net/qq_41453285/article/details/104361652
    • https://blog.csdn.net/qq_41453285/article/details/103465905
    • https://blog.csdn.net/qq_41453285/article/details/104317721
  • MySQL提供了4种事务隔离级别:
    • READ UNCOMMITTED
    • READ COMMITTED
    • REPEATABLE READ
    • SERIALIZABLE
  • 这4种隔离级别,安全性递增,但是效率递减

面试冲刺:30---MySQL的事务隔离级别有哪几种?ACID是什么意思?_第1张图片

READ UNCOMMITTED(未提交读)

  • 一个事务A的修改如果没有提交,那么另外一个事务B可以看到事务A的修改
  • READ UNCOMMITTED的这种现象称为“脏读”

READ COMMITTED(提交读)

  • 一个事务开启之后未提交之前,这个事务所做的任何修改对于其他事务来说都是不可见的
  • 但是对于一个事务来说,它可以读取到其它事务提交过的数据
  • 例如,事务A开启之后,事务B开启然后向表中插入了数据并提交,但是对于事务A来说,事务B插入的这条数据可以在事务A中看到,也就是说,同一个事务A,其查询两次,导致查询的结果不一致
  • READ COMMITTED的这种现象称为“不可重复读”

REPEATABLE READ(可重复读)

  • 一个事务开启之后,其它事务做的任何修改它都看不到
  • 但是对于一个事务来说,其虽然看不到别的事务对数据的修改,但是可以看到别的事务新增的数据
  • 例如,事务A开启之后,事务B修改了某一行的数据,这个修改的数据对于事务A来说是看不到的,但是如果事务C在表中插入了一行数据,那么这新插入的数据行对事务A来说是可见的
  • REPEATABLE READ的这种现象称为“幻读(幻行)”

SERIALIZABLE(可串行化)

  • 数据库被设计为单线程数据库,可以防止上述的所有问题

二、事务的ACID

  • 详情参阅:https://blog.csdn.net/qq_41453285/article/details/104338326
  • ACID是数据库中事务的四个特性:
    • A:原子性(Atomicity)
    • C:一致性(Consistency)
    • I:隔离性(Isolation)
    • D:持久性(Durability)

原子性

  • 原子性是指事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生

一致性

  • 一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是 说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性

隔离性

  • 多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。 在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据 空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数 据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改 它之后的状态,事务不会查看到中间状态的数据。

持久性

  • 这是最好理解的一个特性:持久性,意味着在事务完成以后,该事务所对数据库所作 的更改便持久的保存在数据库之中,并不会被回滚

你可能感兴趣的:(面试冲刺)