6

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

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

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

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

4

1 回答 1

16

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

于 2012-12-18T14:09:43.510 回答