首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请教update语句用的是哪一种锁

2013-11-25 
请问update语句用的是哪一种锁?update 表 set 列aa where 列bb系统自动用的是哪一种锁级别?不过需要

请问update语句用的是哪一种锁?
update 表 set 列='aa' where 列='bb'
系统自动用的是哪一种锁级别?
不过需要说明这个DMV的实时性很强,你也可以开Profiler来监控
这是同样语句监控的结果:
请教update语句用的是哪一种锁
------解决方案--------------------


做了一个实验:


[解决办法]
也就是说他是一个层级化的锁定,

database的S锁,

表的IX锁,

页的IX锁,这个页是,你要修改的哪些行数据,所在的页,就比如,你要修改一行数据,而这行数据在word文档的第113页,那么这一页,也必须要加上IX锁,也就是意向独占锁。

最后是行锁,表示了是第113页的第1行数据,在页中是从第0行数据开始的,所以这里的第1行数据是表中的第2行数据,也就是v = 'bb'的那行数据
[解决办法]
上面实验中的tb表是没有主键,也没建立聚集索引。

那么下面的例子中,是有主键和聚集索引的,结果就会稍微有点不同:

1、
 

热点排行