首页 > 代码库 > lock(3)——更新锁(U)与排它锁(X)
lock(3)——更新锁(U)与排它锁(X)
以下文章中详细介绍了update操作过程中更新锁及排它锁的分配情况
http://blog.csdn.net/zjcxc/article/details/27351779
按照以上文章中的追踪方式,发现其实文章lock(2)——创建及更新表过程中SQL SERVER锁资源分配情况中我们通过sys.dm_tran_locks动态视图查询出来的结果都是最终加锁的情况,并没有体现其中锁变化的情况。如果要想详细的知道锁的变化情况,还是使用profile的方式。
我这里为了加深印象与理解,就再将邹大师的测试自己做一遍:
--该进程为64,先创建表并初始化5条数据,然后在事务中更新数据CREATE TABLE dbo.tb( c1 int, c2 char(10), c3 varchar(10));GODECLARE @id int;SET @id = 0;WHILE @id <5BEGIN; SET @id = @id + 1; INSERT dbo.tb VALUES( @id, ‘b‘ + RIGHT(10000 + @id, 4), ‘c‘ + RIGHT(100000 + @id, 4) );END;BEGIN TRANUPDATE dbo.tb SET c2 = ‘xx‘ WHERE c1 = 2;WAITFOR DELAY ‘00:00:30‘;UPDATE dbo.tb SET c2 = ‘xx‘ WHERE c1 = 5;--ROLLBACK;
--进程66,开启一个事务,并更新tb表中的一条记录BEGIN TRANUPDATE dbo.tb SET c2 = ‘xx‘ WHERE c1 = 1;ROLLBACK;
profile中的追踪情况如下:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。