insert语句:
![](https://images2015.cnblogs.com/blog/1075888/201706/1075888-20170621153651038-897337501.png)
![](file:///D:/WizNote/data/temp/6ba05e94-6386-44f9-923c-851bc4ea6104/128/index_files/aac8d1c8-9da4-470e-b62f-0529b6bdc5aa.png)
其上锁情况为:
![](https://images2015.cnblogs.com/blog/1075888/201706/1075888-20170621153658085-1755944129.png)
![](file:///D:/WizNote/data/temp/6ba05e94-6386-44f9-923c-851bc4ea6104/128/index_files/96a421f2-618d-46f7-867f-9dbafa2dc477.png)
insert语句会对表上的所有索引作出更新,因此这里看到的索引列较多,我们先把所有的索引搞出来看看:
![](https://images2015.cnblogs.com/blog/1075888/201706/1075888-20170621153708429-1552929681.png)
![](file:///D:/WizNote/data/temp/6ba05e94-6386-44f9-923c-851bc4ea6104/128/index_files/a293a583-857b-4919-bf3a-a1fdb8074857.png)
可以看到所有索引都涉及到了,然后我们来仔细分析下加锁情况:
1.表1717581157添加了表级的IX锁,这里objid为41查出来的是NULL表名,不做讨论。
2.用dbcc page查看一下涉及到的所有页的类型:
1:640,非聚集索引页
1:5280,非聚集索引页
1:27216,非聚集索引页
1:22872,非聚集索引页
1:32048,非聚集索引页
1:50160,非聚集索引页
1:1449368,非聚集索引页
1:1461146,数据页(在聚簇表中也叫聚集索引叶子页)
可以看到每个X模式的KEY锁都对应一个IX锁,形成了8个KEY/PAGE锁对儿。这是因为更新每个索引记录都要在其页上加IX页锁。在这8个锁对儿中7个是非聚集索引的锁,1个是聚集索引的锁。
同理:delete语句的加锁状况和insert一样。