SQL2005中的事务与锁定(四)

-狙击手- 2009-10-10 02:28:32
加精
SQL2005中的事务与锁定(四)

------------------------------------------------------------------------
-- Author : HappyFlyStone
-- Date : 2009-10-04 09:00:00
-- Version: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)
-- Apr 14 2006 01:12:25
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
-- 转载请注明出处,更多请关注:http://blog.csdn.net/happyflystone
-- 关键字:隔离等级 锁定 意外数据行为 Lock Hint SnapShot
------------------------------------------------------------------------
起了一个早,也没事干,突然想起昨天没有完成的任务,继续上一篇没说完的。

3、可重复读(Repeatable Read)
概念回顾:可重复读等级比已提交读多了一个约定:所有的共享锁定持续到事务结束,不是在读取完数据就释放。数据被设置了共享锁定后其它进程只能进行查询与增加不能更改,显然这个级别的隔离对程序有了更高的要求,因为可能因长时间的共享锁定影响系统的并发性能,增加死锁发生的机率。很显然是解决了不可重复读的意外行为。
数据测试:
查询一:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

BEGIN TRAN
SELECT * FROM TA WHERE TCID = 1 --可重复查询,并且读不到未提交的数据
--COMMIT TRAN --Don't commit
SELECT @@SPID
/*
tcid Tcname
----------- --------------------
1 READ COMMITTED LOCK
(1 行受影响)

------
52

(1 行受影响)

*/
查询二:
INSERT TA SELECT 9,'FF'
/*
(1 行受影响)
*/
SELECT * FROM TA-- WITH(UPDLOCK)
WHERE TCID = 1

/*
tcid Tcname
----------- --------------------
1 READ COMMITTED LOCK

(1 行受影响)

*/

UPDATE TA
SET TCNAME = 'READ COMMITTED REP'
WHERE TCID = 1
/*
--查询一直进行中……被锁定无结果
--修改数据设置了排它锁定必须等到SPID=52的事务结束

*/

查询三:


很显然查询三中的S,Is(共享及意向共享)锁定一直没消失,因为查询一的事务没有结束,在查询二里可以发现插入与读取(包括在查询一里再次select)是不影响的,并且读取的是未修改前的数据。


....
......
........




阅读全文
http://blog.csdn.net/happyflystone/archive/2009/10/10/4650045.aspx



请大家继续关注我的blog: http://blog.csdn.net/happyflystone
...全文
347 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
chn_justin 2009-10-12
  • 打赏
  • 举报
回复
好人啊,CSDN因你而精彩!
虫洞 2009-10-12
  • 打赏
  • 举报
回复
收藏
建议看楼主博客
还有颜色标出呢,更清楚
林虎 2009-10-12
  • 打赏
  • 举报
回复
接点技术分过冬
Rotel-刘志东 2009-10-12
  • 打赏
  • 举报
回复
study
wanshichen 2009-10-12
  • 打赏
  • 举报
回复
学习
Longer_Bytecc 2009-10-12
  • 打赏
  • 举报
回复
看看...得分呢
ks_reny 2009-10-12
  • 打赏
  • 举报
回复
mark
q85958341 2009-10-12
  • 打赏
  • 举报
回复
没看懂,继续啃书去
harrison6696 2009-10-12
  • 打赏
  • 举报
回复
已阅。不错
SlaughtChen 2009-10-12
  • 打赏
  • 举报
回复
专业浏览
sharpidd 2009-10-12
  • 打赏
  • 举报
回复
学习了.
happy664618843 2009-10-12
  • 打赏
  • 举报
回复
不错 楼主高手
辉太郎 2009-10-12
  • 打赏
  • 举报
回复
路过,学习,帮顶,接分
lsd123 2009-10-12
  • 打赏
  • 举报
回复
.
fenshm 2009-10-12
  • 打赏
  • 举报
回复
学习
jianjianmoluo 2009-10-12
  • 打赏
  • 举报
回复
up
jianjianmoluo 2009-10-12
  • 打赏
  • 举报
回复
up
wsxcdx 2009-10-12
  • 打赏
  • 举报
回复
学习
jenny0810 2009-10-12
  • 打赏
  • 举报
回复
DengXingJie 2009-10-12
  • 打赏
  • 举报
回复
收藏
加载更多回复(26)

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧