事务隔离级别的详细说明

电脑杂谈  发布时间:2020-04-27 07:27:01  来源:网络整理

omgvsnws第二场数据详解 天赋符文大曝光!_隔离级别 详解_大数据架构详解 pdf

我已经讨论过Spring的事务管理“ Spring的事务管理”,其中提到了事务隔离级别. 我不知道有多少人记得?

事务隔离分为4个隔离级别.

从低到高:

未提交读(未提交)已提交读(已提交)可重复读(可重复读)可序列化(序列化).

脏读(从无效数据中读取): 事务A读取事务B尚未提交但事务B回滚的数据,从而导致脏数据,而事务A读取的数据是脏数据,基于操作脏数据可能不正确.

omgvsnws第二场数据详解 天赋符文大曝光!_隔离级别 详解_大数据架构详解 pdf

不可重复读取(Unrepeatable Read): 在访问中,事务范围内的两个相同查询返回不同的数据,即原始读取不可重复. 这是因为在查询间隔中,它是由另一个事务修改和提交的. 脏读取的区别在于,脏读取读取的数据不是由另一个事务提交的,而不可重复读取的数据则是前一个事务提交的数据.

虚拟读取(Phantom Read): 指的是在一个事务的两次查询中数据数量的不一致. 例如,事务A查询几行数据,但另一个事务B此时插入一个新数据. 几列数据,即下一个查询中的上一个事务A,您会发现它以前没有几列数据隔离级别 详解,就像发生了幻觉一样.

读取未提交: 如果事务A开始写入数据,则不允许同时写入事务B,但是允许其他事务读取该行数据.

此隔离级别可以通过“排他锁”来实现. 注意: 有关锁定,请参阅“ Java中的锁定摘要”

避免读取丢失,但可能会发生读取错误. 也就是说,事务A读取事务B的未提交数据.

大数据架构详解 pdf_隔离级别 详解_omgvsnws第二场数据详解 天赋符文大曝光!

已提交读: 读取数据的事务A允许其他事务继续访问数据行,但是未提交的写事务将禁止其他事务访问该行.

此隔离级别可避免脏读取,但可能会发生不可重复的读取.

事务A预先读取了数据,事务B立即更新了数据并提交了事务,而当事务A再次读取数据时,数据已更改.

可重复读: 读数据的事务将禁止写事务(但允许读事务),写事务禁止任何其他事务.

避免不可重复的读取和脏读取,但有时可能会发生幻像读取.

隔离级别 详解_大数据架构详解 pdf_omgvsnws第二场数据详解 天赋符文大曝光!

这可以通过“共享锁”和“排他锁”来实现. 注意: 有关锁定,请参阅“ Java中的锁定摘要”

Serializable(可序列化): 提供严格的事务隔离. 事务序列化是必需的. 事务只能一个接一个地执行,不能同时执行. 如果不能仅通过“行级锁定”来实现事务序列化,则必须使用其他机制来确保刚刚执行查询操作的事务不会访问新插入的数据.

串行化是最高的事务隔离级别,同时它具有最高的成本,并且性能非常低. 通常,很少使用它. 在此级别上,按顺序执行事务不仅可以避免脏的和不可重复的读取,而且还可以避免魔术读取.

摘要:

隔离级别越高,可以保证的数据完整性和一致性越高,但对并发性能的影响越大.

隔离级别 详解_大数据架构详解 pdf_omgvsnws第二场数据详解 天赋符文大曝光!

对于大多数应用程序,您可以优先将系统的隔离级别设置为“已读”. 它可以避免脏读并具有良好的并发性能. 尽管它可能会导致并发问题,例如不可重复的读取,魔术读取以及第二种丢失的更新隔离级别 详解,但是在个别情况下,可能会出现此类问题,但应用程序可以使用悲观或乐观锁定对其进行控制.

大多数的默认级别是“已提交读”(例如Sql Server,Oracle)

MySQL的默认隔离级别为“可重复读取”.

善于与人交流,

适当接受他人的意见!

晚安!


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-190486-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...