事务四大特性ACID+Mysql隔离级别

2019-03-01  本文已影响0人  entro

一、事务

[TOC]

1.1 事务四大特性 ACID:原子性 一致性 隔离性 持久性
1.1.1 原子性 Atomicity

保证事务内所有操作要都成功,要么都失败。

1.1.2 一致性 Consistency

事务开始和结束之间的中间状态不会被其他事务看到

1.1.3 隔离性 Isolation

适当的破坏一致性来提升性能与并行度 例如:最终一致~=读未提交。

1.1.4 持久性 Durability

每一次的事务提交后就会保证不会丢失

1.2 数据隔离级别:未提交读 提交读 可重复读 可串行化

级别越高,问题越少,但是性能越差。

  1. 脏读 读到未提交的事务。在事务回滚的时候产生脏读
  2. 不可重复读 执行过程比较长,先读到事务未修改的数据,后读到事务修改后的数据。
  3. 幻读 执行过程较长, 两种情况:先读有,后去读没有;先读没有,后读有。(事务插入或者删除了数据)
隔离级别 脏读 不可重复读 幻读
Read Uncommitted
Read committed -
Repeatable read - -
Serializable - - -
1.2.1 Read Uncommitted 读到未提交的内容

会产生脏读,不可重复读,幻读

1.2.2 Read Committed 读到提交的内容

产生不可重复度和幻读

1.2.2 Repeatable read 可重复读

默认级别,innodb的MVCC配合间隙锁部分解决幻读。不能解决的部分幻读是当事务A去修改事务B已经提交的数据的时候还是会产生幻读。

1.2.2 Serializable 可串行化

完全解决幻读只能串行化。

上一篇 下一篇

猜你喜欢

热点阅读