码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server 之 事务隔离级别

时间:2015-02-25 15:36:27      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

SET TRANSACTION ISOLATION LEVEL xxx  -- 每次设置只针对当前事务块

xxx 取值:

READ UNCOMMITTED

READ COMMITTED

REPEATABLE READ

SNAPSHOT

SERIALIZABLE

 

test1表数据如下:

技术分享     技术分享

 

现在对 Name 为 aaaaa 进行 update,并设置2分钟延时

技术分享 

上面的 update 默认使用 rowlock的,所以对于该表是使用IX锁的(第12行),此时如果查询其它行,是不会被阻塞的,因为IX兼容IS。

技术分享

 但如果 update 使用 tablock,则该表将使用X锁,有关该表查询都会被阻塞,因为X不兼容IS。

技术分享

技术分享

 

设置事务隔离级别为 READ UNCOMMITTED,则允许脏读(注意此事务隔离级别设置只在当前有效

技术分享

 

等同如下设置,但nolock只针对当前select语句:

技术分享

 

此时如果如下使用,将会被阻塞:

技术分享

 

最后,延时结束时,update 的数据被回滚,导致上面有结果的查询出现脏读,而被阻塞的查询将会获得如下数据:

技术分享

SQL Server 之 事务隔离级别

标签:

原文地址:http://www.cnblogs.com/yipeng-yu/p/4299492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!