读书人

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

发布时间: 2013-11-25 13:22:27 作者: rapoo

请问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、
 

读书人网 >SQL Server

热点推荐