1、前提概念
-
隔离性(isolation)
事务的隔离性意味着并发的事务之间是相互隔离的。即一个事务的内部操作及正在操作的数据必须封锁起来,不被企图进行修改的其他事务看到。隔离性是DBMS针对并发事务间的冲突提供的安全保证,DBMS可以通过加锁的方式在并发执行的事务间提供不同级别的分离。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。
DBMS可以在并发执行的事务间提供不同级别的分离。分离的级别和并发事务的吞吐量之间存在反比关系。较多事务的可分离性可能会带来较高的冲突和较多的事务流产。流产的事务要消耗资源,这些资源必须要重新被访问。因此,确保高分离级别的DBMS需要更多的开销。
隔离性包含四种隔离级别,分别是RU(读未提交)、RC(读已提交)、RR(可重复读)、SERIALIZABLE (串行化)。 -
脏读
一个事务读取到另一个事务未提交的数据。 -
不可重复读
在一个事务内,因读取到另一个事务已提交的update。导致在该事务内,对同一条记录读取两次以上的结果不一致。 -
幻读
在一个事务内,因读取到另一个事务已提交的insert数据或者delete数据。导致在该事务内,对同一张表读取两次以上的结果不一致。 -
丢失更新
两个事务针对同一数据都发生修改操作时,会存在丢失更新问题:
2、数据准备
#