mysql的事物隔离级别与脏读、不可重复读、幻读详解

**

mysql事物隔离级别

**
READ UNCOMMITTED:读未提交 (可以读取未提交的数据)
最低的隔离级别,允许读取未提交的数据,可能回到导致脏读,幻读,不可重复读

READ COMMITTED:读已提交 (可以读取已经提交的数据)
允许读取已经提交的数据,可以阻止脏读,但是幻读和不可重复读仍有可能发生

REPEATABLE READ:可重复读(mysql默认事物隔离级别)
对同一字段的多次读取结果都是一致的,除非数据是被本身修改(其他人修改的读不到),可以阻止脏读,不可重复读,但是幻读还有可能发生,

SERIALIZABLE:串行化
最高的事物隔离级别,所有的事物逐个执行,事物之间不可能产生干扰,可以防止脏读、幻读、不可重复读。

**

脏读、不可重复读、幻读

**

脏读:表示当前事物可以读到其他事物修改了,但是还没提交的数据

不可重复读:当前事物查询了两次,但是两次数据不同,是因为其他事物修改了这个数据,并且提交了,正常来说是不应该读到其他事物修改的数据,因为本次事物还没有提交。

幻读:当前事物在未提交时读到了其他事物添加的数据 (这也属于不可重复读)。但是在
REPEATABLE READ(可重复读) 的隔离级别下,还是可以读取到但是不显示出来。例如在A事物第一次查询是三条记录,这时B事物添加了一条数据 (id = 10) 并提交,A事物第二次查询还是三条记录,但在此时A事物若想添加一条数据和B事物添加的数据一样时 (id = 10) 是插入不进去的,所以REPEATABLE READ(可重复读) 的隔离级别下还是存在幻读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值