Sql-Server
一個簡單的選擇查詢會獲取鎖嗎?
我對 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