Sql-Server
SQL Server 何時獲取鎖?
在此處找到的 SQL Server 中的隔離級別列表指出,在事務中獲取的寫鎖將保留到事務結束。但是,它沒有提及有關何時獲取這些鎖的任何資訊。
預設情況下,鎖是在事務開始時獲取,還是僅在需要時獲取?如果後者是真的,那麼在大型事務中盡可能晚地執行寫操作以最小化持有 X 鎖的時間量是否有利?
預設情況下,鎖是在事務開始時獲取,還是僅在需要時獲取?
在讀取或寫入發生之前立即獲取鎖。根據儲存引擎選擇的鎖定粒度,可以在行、頁、分區或對象(表)級別獲取鎖。
如果後者是真的,那麼在大型事務中盡可能晚地執行寫操作以最小化持有 X 鎖的時間量是否有利?
是的,它可能對並發有利,具體取決於並發事務使用的隔離級別。
相關閱讀:
- 鎖升級(數據庫引擎) - 線上圖書
- 了解 SQL Server 並發性 - Kalen Delaney(免費電子書)