「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
沒有留言:
張貼留言