搜尋本站文章

2017-02-15

[SQL Server]:Latch 與 Lock 的差異


「Latch(閂鎖)」

Latch 是SQL Server 內部儲存引擎的物件,用來同步處理資源,例如:記憶體的資料頁面、資料檔案的資料頁面等。

例如:
在記憶體緩衝區集區(Buffer)裡的資料頁面與磁碟上的資料檔案之資料頁面,需要作互動同步時,為了確保不會有多個使用者同時讀取/寫入記憶體的資料頁面。

SQL Server採取與處理資料表相同的機制,對記憶體中的資料頁面,實施加鎖的機制,藉此同步多個使用者的平行處理。
這個加鎖的機制,SQL Server採取的是 使用「Latch(閂鎖)」。
  • 資料庫管理師、程式設計師,不能控制「Latch」。


「Latch(閂鎖)」與「Lock(鎖定)」相同的是,都會出現「封鎖(Blocking)」。


「Lock(鎖定)」

是用來同步處理使用者物件,例如:資料表、資料列、索引等。

例如:
在開發並行交易程式時,設定要使用交易隔離層級(transaction isolation level),或是使用資料表的「鎖定提示(Locking Hints)」,來設計各種鎖定模式來鎖定目標資源。
  • 資料庫管理師、程式設計師,可以自行控制「Lock」。




在進行 SQL Server 效能調教時,可以利用 DMV sys.dm_os_wait_stats 得知執行緒因故所遇到的所有等候(Wait)之相關資訊。

利用此份彙總檢視來診斷 SQL Server 的效能問題,以及特定查詢和批次的效能問題。


-- sys.dm_os_wait_stats 得知執行緒因故所遇到的所有等候(Wait)之相關資訊。
-- 利用此份彙總檢視來診斷 SQL Server 的效能問題,以及特定查詢和批次的效能問題。

SELECT * FROM sys.dm_os_wait_stats; 

-- 01_sys.dm_os_wait_stats_彙總檢視來診斷 SQL Server 的效能問題,以及特定查詢和批次的效能問題



PAGEIOLATCH_DT
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是終結模式。如果等候時間很長,表示磁碟子系統有問題。
PAGEIOLATCH_EX
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是獨佔模式。如果等候時間很長,表示磁碟子系統有問題。
PAGEIOLATCH_KP
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是保留模式。如果等候時間很長,表示磁碟子系統有問題。
PAGEIOLATCH_NL
僅供參考之用。不支援。我們無法保證未來的相容性。
PAGEIOLATCH_SH
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是共用模式。如果等候時間很長,表示磁碟子系統有問題。
PAGEIOLATCH_UP
當工作在位於 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是更新模式。如果等候時間很長,表示磁碟子系統有問題。
PAGELATCH_DT
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是終結模式。
PAGELATCH_EX
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是獨佔模式。
PAGELATCH_KP
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是保留模式。
PAGELATCH_NL
僅供參考之用。不支援。我們無法保證未來的相容性。
PAGELATCH_SH
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是共用模式。
PAGELATCH_UP
當工作不是在 I/O 要求中的緩衝區閂鎖待命時發生。閂鎖要求是更新模式。




參考資料

什么是PAGELATCH和PAGEIOLATCH
https://blogs.msdn.microsoft.com/apgcdsd/2011/11/28/pagelatchpageiolatch/

SQL Server 的 Latches 物件
https://msdn.microsoft.com/zh-tw/library/ms177421.aspx

Explanation of SQL Server IO and Latches
https://www.mssqltips.com/sqlservertip/3088/explanation-of-sql-server-io-and-latches/

SQL SERVER – What is the Difference Between Latches and Locks
https://blog.sqlauthority.com/2014/03/16/sql-server-what-is-the-difference-between-latches-and-locks/

Welcome To TechBrothersIT: SQL SERVER DBA INTERVIEW QUESTIONS
http://www.techbrothersit.com/search/label/SQL%20SERVER%20DBA%20INTERVIEW%20QUESTIONS

Latch , lock , pin -- 差異
http://blog.itpub.net/35489/viewspace-664252

sys.dm_os_wait_stats (Transact-SQL)
https://technet.microsoft.com/zh-tw/library/ms179984(v=sql.105).aspx

以動態管理物件觀察 SQL Server(2)─找到最耗資源的執行計畫
http://www.runpc.com.tw/content/content.aspx?id=108039

王者歸來:SQL SERVER 2012實戰指南
http://www.books.com.tw/products/0010637404

在超過 64 個 CPU 之電腦上執行 SQL Server 的最佳作法
https://technet.microsoft.com/library/ee210547(sql.105).aspx