SQL Server 中的默认锁定粒度是多少?



我已经彻底阅读了有关表提示的MSDN,但我似乎没有找到锁定粒度默认值。假设我有以下查询:

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

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

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

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

最新更新