成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起聊聊 SQLServer 的Latch

數(shù)據(jù)庫 其他數(shù)據(jù)庫
SQLSERVER中并無此類機制,因此對于一些重度訪問的內(nèi)存結(jié)構(gòu),設(shè)計了LATCH來保護,而其他的一些數(shù)據(jù)結(jié)構(gòu),使用spinlock。在SQLSERVER中,總是使用spinlock來保護那些訪問十分快速的內(nèi)存結(jié)構(gòu)。

昨天聊了下SQLSERVER的spinlock,當時我認為spinlock是與Oracle LATCH相對應(yīng)的結(jié)構(gòu),事實上碎片化的閱讀會帶來一些知識掌握的不準確。Oracle的LATCH是通過spin來實現(xiàn)鎖的獲取的,spin是LATCH獲取輕量級鎖的一種方式。而在SQLSERVER中,LATCH和spinlock被設(shè)計成兩種輕量級鎖,分別用于不同的場景。Oracle有shared pool,library cache等結(jié)構(gòu),可以用shared pool閂鎖來保護整個共享池,共享池中新增的一些亂七八糟的數(shù)據(jù)結(jié)構(gòu)可以通過shared pool閂鎖以及mutex來實現(xiàn)串行化訪問保護。

SQLSERVER中并無此類機制,因此對于一些重度訪問的內(nèi)存結(jié)構(gòu),設(shè)計了LATCH來保護,而其他的一些數(shù)據(jù)結(jié)構(gòu),使用spinlock。在SQLSERVER中,總是使用spinlock來保護那些訪問十分快速的內(nèi)存結(jié)構(gòu)。

LATCH是 SQL Server 的SQL引擎用來保證內(nèi)存結(jié)構(gòu)的一致性的輕量級原子操作用來保護索引、數(shù)據(jù)頁和內(nèi)部結(jié)構(gòu)等結(jié)構(gòu),例如 B 樹中的非葉頁。LATCH僅存在于SQL引擎內(nèi)部。SQL Server 使用緩沖LATCH來保護緩沖池中的頁面,并使用 I/O LATCH來保護尚未加載到緩沖池中的頁面。每當向 SQL Server 緩沖池中的頁面寫入或讀取數(shù)據(jù)時,工作線程必須首先獲取該頁面的緩沖LATCH。有多種緩沖LATCH類型可用于訪問緩沖池中的頁面,包括獨占LATCH (PAGELATCH_EX) 和共享LATCH(PAGELATCH_SH)。

當 SQL Server訪問一個尚未加載到緩沖池中的頁面時,將通過一個異步 I/O操作將該頁面加載到緩沖池中。如果 SQL Server 需要等待 I/O 子系統(tǒng)響應(yīng),它將根據(jù)請求類型等待獨占 (PAGEIOLATCH_EX) 或共享 (PAGEIOLATCH_SH) I/O LATCH;這樣做是為了防止另一個工作線程使用不兼容的LATCH將同一頁面加載到緩沖池中。LATCH還用于保護對緩沖池頁面以外的內(nèi)部存儲器結(jié)構(gòu)的訪問;這些被稱為非緩沖LATCH。

PAGELATCH的爭用在多 CPU 系統(tǒng)十分常見。當多個線程同時嘗試獲取相同內(nèi)存結(jié)構(gòu)的不兼容LATCH時,就會發(fā)生LATCH爭用。閂鎖是一種內(nèi)部并發(fā)控制機制,SQL 引擎會自動確定何時使用它們。因為閂鎖的行為是確定性的,數(shù)據(jù)庫SCHEMA的設(shè)計,表、索引等的設(shè)計會影響閂鎖爭用。

非緩存頁的閂鎖名稱為LATCH_XX,其中“_XX”后綴表示了閂鎖的模式(PAGEIOLATCH/PAGELATCH也使用后綴表示模式)。SQL Server 的閂鎖模式可以總結(jié)如下:

lKP——保持LATCH,確保引用的結(jié)構(gòu)不會被破壞。當線程想要查看緩沖區(qū)結(jié)構(gòu)時使用。因為 KP LATCH兼容除銷毀(DT)之外的所有LATCH,因此 KP 閂鎖被認為是“輕量級”的,這意味著使用它時對性能的影響最小。由于 KP 閂鎖與 DT 閂鎖不兼容,它會阻止任何其他線程破壞引用的結(jié)構(gòu)。KP 閂鎖將防止它引用的結(jié)構(gòu)被lazywriter 進程破壞(臟塊寫盤并釋放緩沖);

lSH -- 共享閂鎖,需要讀取引用的結(jié)構(gòu)(例如讀取數(shù)據(jù)頁)。多個線程可以同時訪問共享閂鎖下的資源以進行讀取。

lUP——更新閂鎖,與 SH(共享閂鎖)和 KP 兼容,但不兼容其他閂鎖,因此不允許 EX 閂鎖寫入引用的結(jié)構(gòu)。

lEX——獨占閂鎖,阻止其他線程寫入或讀取引用的結(jié)構(gòu)。一個使用示例是修改頁面內(nèi)容以保護頁面損壞。

lDT -- 銷毀閂鎖,必須在銷毀引用結(jié)構(gòu)的內(nèi)容之前獲取。例如,lazywriter 進程必須獲取一個 DT 閂鎖以釋放一個干凈的頁面,然后再將其添加到可供其他線程使用的空閑緩沖區(qū)列表中。

圖片

上面的描述中關(guān)于閂鎖兼容性的描述,可以用上表來表示。如果我們看到一個閂鎖,可以通過”_”之后的后綴來區(qū)分其模式。比如PAGEIOLATCH_EX是一個獨享的PAGEIOLATCH,LATCH_DT是一個非緩沖區(qū)保護的銷毀閂鎖。

和Oracle的子閂鎖類似,SQLSERVER也存在類似的結(jié)構(gòu),稱為superlatch或者sublatch。目的是使用多個子閂鎖來提高閂鎖的并發(fā)性能。SQLSERVER使用多線程結(jié)構(gòu),并采用緩沖區(qū)動態(tài)擴展的方式。因此superlatch機制與NUMA架構(gòu)做了一些優(yōu)化,使之更好的適應(yīng)NUMA。

SuperLatches 可以提高訪問共享頁面的性能,其中多個并發(fā)運行的工作線程需要 SH 閂鎖。為此,SQL Server 引擎會將此類頁面上的閂鎖動態(tài)提升為 SuperLatch。

在為大型服務(wù)器設(shè)計的高吞吐量系統(tǒng)上,必定會出現(xiàn)高并發(fā)的閂鎖爭用,在此類系統(tǒng)中存在閂鎖爭用是十分正常的現(xiàn)象。但是當閂鎖爭用和閂鎖等待類型等待時間大到足以降低 CPU 利用率的情況下,系統(tǒng)的整體吞吐量會嚴重下降。識別和識別閂鎖爭用的跡象很重要,所以讓我們必須有能力來分析這種情況。SQL Server 閂鎖的預(yù)期行為(與每秒事務(wù)數(shù)相關(guān))是每秒事務(wù)數(shù)將隨著平均 SQL Server 閂鎖等待時間的增加而增加,其本身以緩慢的速度增加。如果數(shù)據(jù)庫并發(fā)增長的趨勢與閂鎖等待的趨勢十分接近,那么閂鎖爭用并沒有產(chǎn)生額外的負面影響。如果閂鎖等待幅度遠遠超過數(shù)據(jù)庫負載的增長,那么就說明閂鎖出現(xiàn)了嚴重的爭用。這個判斷原則在大多數(shù)情況下是有效的。

我已經(jīng)比較長時間沒有仔細閱讀數(shù)據(jù)庫廠商官方的白皮書了,通過這兩天的學(xué)習(xí),我學(xué)到了一個分析數(shù)據(jù)的方法。實際上有些指標之間是存在較為同步的關(guān)聯(lián)關(guān)系的,通過上升或者下降的幅度(可以通過統(tǒng)計學(xué)方法計算出一個可評估的度量)之間的對比,可以發(fā)現(xiàn)一些系統(tǒng)的性能問題。以前我們做了一個指標關(guān)聯(lián)性分析工具,用于發(fā)現(xiàn)數(shù)據(jù)庫某個指標異常可能存在的問題。實際上用這種更為簡單的算法,也可以發(fā)現(xiàn)系統(tǒng)中存在的一些背離預(yù)期行為的場景,并用于告警。

圖片

責(zé)任編輯:武曉燕 來源: 白鱔的洞穴
相關(guān)推薦

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發(fā)模式

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-09-10 21:42:31

2024-02-20 21:34:16

循環(huán)GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2023-08-02 08:35:54

文件操作數(shù)據(jù)源

2022-12-06 08:12:11

Java關(guān)鍵字

2025-04-11 00:05:49

RPC底層分布式

2022-09-08 08:50:17

SSDOracleCPU

2024-09-09 08:53:56

2024-06-14 09:32:12

2023-03-26 23:47:32

Go內(nèi)存模型

2024-07-26 09:47:28

2023-07-24 09:41:08

自動駕駛技術(shù)交通

2022-02-23 08:41:58

NATIPv4IPv6

2022-09-22 08:06:29

計算機平板微信

2024-11-28 09:57:50

C#事件發(fā)布器
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久久久久久久久久亚洲 | 91视频在线 | 亚洲一区二区中文字幕 | 国产一区二区三区四区hd | 成人午夜免费福利视频 | 精品在线一区 | 免费一区| 亚洲精品久久久久久国产精华液 | 黄色大片观看 | 一区二区三区四区在线视频 | 一区二区三区视频在线观看 | 亚洲一区久久 | 99精品网站 | 亚洲免费在线 | 久久国| 成人夜晚看av | 精品视频一区二区三区 | 亚洲三级av| av国产精品毛片一区二区小说 | 国产一区二区三区在线 | 国产99视频精品免视看9 | 九色视频网站 | 超碰人人艹 | 日韩在线一区视频 | 欧美啪啪 | h免费观看 | 成人精品视频在线观看 | 国产精品久久777777 | 色综合久久久久 | 视频在线亚洲 | 中文字幕乱码一区二区三区 | 久久久国产精品 | 久久久久一区二区三区 | 国产线视频精品免费观看视频 | 亚洲看片网站 | 一区二区中文 | 一二区成人影院电影网 | 在线日韩视频 | 欧美日韩成人 | 精品国产乱码久久久久久图片 | 国产探花在线精品一区二区 |