数据库弱一致性四个隔离级别

原创 2011年01月18日 00:19:00

SQL-92标准中定义了四个隔离级别,这四个隔离级别在以前版本的SQL Server中即受到支持:

READ UNCOMMITTED是限制性最弱的隔离级别,因为该级别忽略其他事务放置的锁。使用READ UNCOMMITTED级别执行的事务,可以读取尚未由其他事务提交的修改后的数据值;这些行为称为“脏”读。比如,事务1修改一行,事务2在事务1提交之前读取了这一行。如果事务1回滚,事务2就读取了一行没有提交的数据,这样的数据我们认为是不存在的。

READ COMMITTED(Nonrepeatable reads)SQL Server默认的隔离级别。该级别通过指定语句不能读取其他事务已修改但是尚未提交的数据值,禁止执行脏读。在当前事务中的各个语句执行之间,其他事务仍可以修改、插入或删除数据,从而产生无法重复的读操作,或“影子”数据。比如,事务1读取了一行,事务2修改或者删除这一行并且提交。如果事务1想再一次读取这一行,它将获得修改后的数据或者发现这一样已经被删除,因此事务的第二次读取结果与第一次读取结果不同,因此也叫不可重复读。

REPEATABLE READ是比READ COMMITTED限制性更强的隔离级别。该级别包括READ COMMITTED,并且另外指定了在当前事务提交之前,其他任何事务均不可以修改或删除当前事务已读取的数据。并发性低于 READ COMMITTED,因为已读数据的共享锁在整个事务期间持有,而不是在每个语句结束时释放。比如,事务1读取了一行,事务2想修改或者删除这一行并且提交,但是因为事务1尚未提交,数据行中有事务1的锁,事务2无法进行更新操作,因此事务2阻塞并且回滚。如果这时候事务1想再一次读取这一行,它读取结果与第一次读取结果相同,因此叫可重复读。

SERIALIZABLE 是限制性最强的隔离级别,因为该级别锁定整个范围的键,并一直持有锁,直到事务完成。该级别包括REPEATABLE READ,并增加了在事务完成之前,其他事务不能向事务已读取的范围插入新行的限制。比如,事务1读取了一系列满足搜索条件的行。事务2在执行SQL statement产生一行或者多行满足事务1搜索条件的行时会冲突,则事务2回滚。这时事务1再次读取了一系列满足相同搜索条件的行,第二次读取的结果和第一次读取的结果相同。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据库事务的四个隔离级别浅析

数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、...

数据库隔离级别

  • 2013-07-03 17:37
  • 944KB
  • 下载

数据库事务和隔离级别

  • 2013-03-26 12:38
  • 10KB
  • 下载

标准SQL规范中定义的四个事务隔离级别

在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同: ◆未授权读取(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数...
  • pinuo
  • pinuo
  • 2012-02-01 21:14
  • 963

数据库事务隔离级别

  • 2011-12-19 14:09
  • 154KB
  • 下载

数据库的隔离级别介绍

  • 2011-08-04 15:55
  • 25KB
  • 下载

标准SQL规范中定义的四个事务隔离级别

通过一些现象,可以反映出隔离级别的效果。这些现象有:         1、更新丢失(lost update):当系统允许两个事务同时更新同一数据是,发生更新丢失。      &...

Spring 五个事务隔离级别和七个事务传播行为和数据读取出现的四个问题(丢失或覆盖更新、脏读、非重复读、幻想读)

Spring在TransactionDefinition接口中定义了五个不同的事务隔离级别:隔离级别是指若干个并发的事务之间的隔离程度。TransactionDefinition 接口中定义了五个表示...

数据库事务隔离级别

1.      Jdbc事务隔离级别 Jdbc隔离级别 数据库隔离级别 数据访问情况 TRANSACTION_READ_UNCOMMITTED(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)