原创声明

本文修改、整理自:


事务

事务具有 ACID 四个特性:

事务隔离级别用于解决数据在高并发情况下产生的问题。

mysql-transaction-isolation-level.jpg


脏读、不可重复读、幻读

脏读是指一个事务读取到另外一个事务修改但未提交的数据

dirty-read.jpg

不可重复读是指一个事务读取到另外一个事务已提交的数据,导致两次读取到的数据不一致

unrepeatable-read.jpg

幻读是指某次 select 操作得到的结果集所表征的数据状态无法支撑后续的业务操作。

具体来说:select 某记录是否存在,如果不存在,则准备插入此记录,但是执行 insert 操作时,发现该记录已经存在,无法插入,此时就产生了幻读。

phantom-read.jpg

事务隔离级别越严格,效率越低,通常将其设置为 READ COMITTED,就可以解决大多数问题。