SQL Server中的默认锁粒度是什么?

时间:2012-12-18 13:51:51

标签: sql-server sql-server-2008 locking granularity database-locking

我已经彻底阅读了MSDN about table hints,而且我似乎没有找到锁定粒度默认值。假设我有以下查询:

SELECT TOP (1) * FROM MyTable WITH (UPDLOCK, READPAST) ORDER BY SomeColumn ASC;

您看,我指定了UPDLOCKREADPAST提示,但没有指定任何粒度提示,例如TABLOCKROWLOCK

默认情况下使用哪种粒度锁定级别?

1 个答案:

答案 0 :(得分:16)

没有'默认'。粒度(行,页面,(分区|对象))是根据对象的允许选项(allow_page_locks / allow_row_locks)动态计算的,有关操作意图(探测,扫描,插入)的信息,行集的估计大小和其他因素的数量(隔离级别,只读文件组等)。在大多数情况下,您将获得单件操作的行级粒度和扫描的页级粒度。您发布的查询可能会采用页面级粒度,因为它是扫描。