数据库四种隔离级别

数据库四种隔离级别

读未提交

读未提交是指一个事务可以读到另一个事务未提交的数据,这种隔离级别的并发性最高,但是会出现“脏读”,导致一个事务可能读到另一个事务回滚的数据,如下图所示
在这里插入图片描述

除非有特殊需求,一般不会使用这种隔离级别。

读提交

读提交是指一个事务只能读到另一个事务提交的数据,这是大部分数据库默认的隔离级别(MySQL不是),这种隔离级别保证了数据库不会发生“脏读”,但是会出现“不可重复读”,如下图所示
在这里插入图片描述
事务1第一次查询出结果后,事务2对事务1中查询的记录行做了修改,导致事务1再一次执行同样的查询语句的结果和前面不一致,这就是“不可重复读”。

可重复读

这是MySQL数据库的默认隔离级别,可重复读是在数据库进行读取操作时对相应数据行添加共享锁,在进行修改操作时对相应数据行添加排他锁,两种锁都必须提交才可以释放,防止事务在两次读取时出现数据不一致问题。但是这种隔离级别还会出现“幻读”,如下图所示
在这里插入图片描述
在事务1第一次查询的时候,对第一行和第二行添加了共享锁,此时查询到第一行和第二行之间的两条数据,而事务2此时在第一行和第二行之间再添加一条数据,因为此时加锁的只是数据行,所以事务2依旧可以拿到锁,导致事务1再次查询时发现有了3条数据。

不可重复读和幻读的区别
不可重复读和幻读都是两次读取的数据不一致,而不可重复读主要指两次读取的数据值不一致,幻读是指两次读取的记录数不一致,从根本上来说,不可重复读需要将正在读取行加锁,只需要锁住对应的行数据,而幻读需要将需要将读取的范围内地所有数据进行加锁,需要锁住的数据量更多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值