4

我已經完全閱讀MSDN about table hints,我似乎沒有找到鎖定粒度的默認值。假設我有以下查詢:SQL Server中的默認鎖粒度是多少?

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

你看,我指定UPDLOCKREADPAST提示,但沒有任何粒度的提示,如TABLOCKROWLOCK

默認情況下使用哪種粒度鎖定級別?

+0

默認情況下,它是一個行級鎖。當會話/交易超過約。 5000行級別的鎖定,則鎖定將**升級爲表級鎖定(或分區級別,如果您擁有分區表) –

回答

14

沒有「默認」。根據對象的允許選項(allow_page_locks/allow_row_locks),關於操作意圖的信息(探測,掃描,插入),估計的行集大小和a其他因素的數量(隔離級別,文件組只讀等)。在大多數情況下,您將獲得單體操作的行級粒度和掃描的頁級粒度。您發佈的查詢可能會與頁面級粒度一致,因爲是掃描。