Sql-Server

一個簡單的選擇查詢會獲取鎖嗎?

  • November 20, 2019

我對 SQL Server 很陌生,想了解以下非常簡單的select語句是否會佔用任何鎖。

Select * from Student;

請考慮語句不會在begin tran塊內執行的情況。

是的,它在預設情況下對讀取的行使用共享鎖(它還在將讀取的聚集索引的所有頁面上使用 Intent Shared 鎖),這樣做是為了防止臟讀。但是有一些方法可以繞過這個(SQL Server 有 nolock 提示)。如果語句不在 BEGIN TRAN 中,則在 SELECT 語句執行後釋放鎖。

更多資訊可以在這裡找到:

http://msdn.microsoft.com/en-us/library/ms184286(v=sql.105).aspx http://www.sqlteam.com/article/introduction-to-locking-in-sql-server

引用自:https://dba.stackexchange.com/questions/40987