事务的隔离级别及其存在的相应的问题

事务的隔离级别有:

1、READ UNCOMMITTED --> 读未提交

由于在读取数据时不做任何限制所以并发性能很高,但是会出现⼤量的数据安全问题,比如在事务A中执行了⼀条 INSERT 语句,在没有执行 COMMIT 的情况下,会在事务B中被读取到,此时如果事务A执行回滚操作,那么事务B中读取到事务 A写入的数据将没有意义,我们把这个理象叫做 "脏读" 。

        

2、READ COMMITED --> 读已提交与不可提交

解决了脏读问题,这时事务只能读到了其 他事务提交之后的数据,但会出现不可重复读的问题,比如事务A先对某条数据进行了查询,之后事务 B对这条数据进行了修改,并且提交( COMMIT )事务,事务A再对这条数据进行查询时,得到了事务B 修改之后的结果,这导致了事务A在同⼀个事务中以相同的条件查询得到了不同的值,这个现象要"不可重复读"。

3、REPEATABLE READ  --> 可重复读与幻读

解决了不可重复读问题,这时同一个事务中读取的数据在任何时候都是相同的结果,但还会出现一个问题,事务A查询了⼀个区间的记录得到 结果集A,事务B向这个区间的间隙中写入了⼀条记录并提交,事务A再查询这个区间的结果集时会查 到事务B新写入的记录得到结果集B,两次查询的结果集不⼀致,这个现象就是"幻读"。

4、SERIALIZABLE --> 串行化

进一步提升事务的隔离级别到 SERIALIZABLE ,此时所有事务串行执行,可以解决所有并发中的安全问题。

5、不可重复读和幻读的核心区别

不可重复读(Non-repeatable Read)

  • 定义:同一个事务中,以相同条件多次查询同一条数据,得到不同的结果
  • 产生原因:其他事务对该条数据进行了修改并提交
  • 影响范围:针对已存在的单条数据

幻读(Phantom Read)

  • 定义:同一个事务中,以相同条件多次查询一个数据范围,得到不同的结果集
  • 产生原因:其他事务向该查询范围中插入或删除了新的记录并提交
  • 影响范围:针对数据范围或结果集

6、不同隔离级别的性能与安全

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值