mysql 数据库 事务 四种隔离级别(读未提交、不可重复读、可重复读、串行化) 和并发出现的情况(脏读、不可重复读、幻读)事务的四种特性(原子、一致、隔离、持久)

213 阅读3分钟

目录

介绍

1.事务四种特性

1.1原子

1.2一致性 

1.3隔离性

1.4持久性

2.并发可能会出现的情况

2.1脏读

2.2不可重复读

2.3幻读

总结重点

3.事务的四种隔离级别

3.1读未提交read-uncommitted

3.2不可重复读

3.3可重复读

3.4串行化


介绍

这里介绍下 从事务 到 并发可能出现情况,到数据库事务隔离级别,以及隔离级别对应的情况。

 

1.事务四种特性

1.1原子

事务开始干活,要么全做完,要么全部没做完,直接回滚,不可能停留在中间情况。事务发生任何问题,都直接回滚到执行前状态。

1.2一致性 

事务开始前和执行后,数据库的完整约束性不会被改变,不会发生改变,像银行a向b赚钱,a扣了钱,b就必须增长钱

 

1.3隔离性

事务之间进行隔离,同一条数据一个事务操作其他事务不能操作,不会出现事务a做事,事务b也操作同一份数据情况。像a从银行取钱,b这个时候不能向a存钱,只有a完成后b才可以,完全隔离开

1.4持久性

事务完成后,所有更新的结果都会保存到数据库,并且不会发生回滚情况。

 

2.并发可能会出现的情况

2.1脏读

  • 示例:事务a读取到事务b修改了的数据,这时事务b回滚了数据,事务a读到的就是脏数据。

2.2不可重复读

  • 示例: 事务a多次读取同一数据,当中事务b更新并提交,事务a发现多次读到的不一样,就是不可重复读。
  • 重点:事务b在事务a的多次读取中,做了修改

 

2.3幻读

  • 示例:事务a批量修改一批条件中数据,字段phone=aa ,这时 事务b新增一条数据 也满足事务a修改数据的条件,最后事务a一看结果,我靠咋没全改过来呢,哈哈,很逗啊,出现幻觉了,就是幻读。
  • 重点:事务a修改一批数据,事务b做了新增。

 

 

总结重点

  • 不可重复读出现在,修改情况下。
  • 幻读出现在新增情况下。

 

3.事务的四种隔离级别

 

3.1读未提交read-uncommitted

会涉及到:脏读、不可重复读、幻读  的情况

 

3.2不可重复读

会设计到:不可重复读、幻读 的情况

 

3.3可重复读

会涉及到: 幻读 的情况

 

3.4串行化

三类情况都不会涉及到

 

 

 

 

 

ok

 

 

 

 

 

持续更新