ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL SERVER中一个常见SELECT动作要申请的锁(二)

SQL SERVER中一个常见SELECT动作要申请的锁(二)

原创 Linux操作系统 作者:edwardking888 时间:2011-04-08 14:46:30 0 删除 编辑

在 SQL SERVER中一个常见SELECT动作要申请的锁(-)中

介绍的是带聚集索引的表。

下面对 堆表 做下测试:

在堆表上含有一个EmployeeId上的非聚集索引,所以SQL SERVER在非聚集索引找到这条记录后,必须再到数据页面上把其他行上面的数据找出来。

begin tran
select EmployeeId, LoginID, Title
from  HumanResources.EmployeeHEAP
where EmployeeId = 3

在SQL SERVER 2005下

执行计划信息如下:

执行后保留的锁信息:

 

在SQL SERVER 2008 R2下的执行后保留锁的信息:

也多了一个Sch-S锁。

从截图可以看出

一个查询使用的索引键(或RID)数目越多,它申请的锁也就会越多。没有使用到的索引上不会申请共享锁。

 

SQL2008R2 select执行计划(堆表).jpg

SQL2005SP3 select后保留的锁(堆表).jpg

SQL2008R2 select后保留的锁(堆表).jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8183550/viewspace-691955/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-04-03

  • 博文量
    477
  • 访问量
    1466224