六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

什么是latch?latch與lock的區別

[摘要]Latch什么是latch:  鎖是數據庫系統區別與文件系統的一個關鍵特性。鎖機制用于管理對共享資源的并發訪問。Innodb存儲引擎在行級別上對表數據上鎖,這固然不錯。但是Innodb也會在多個地方使用鎖,從而允許多種不同資源提供并發訪問。例如,操作緩沖池匯總的LRU列表,刪除、添加、移動LRU列...
Latch

什么是latch:

  鎖是數據庫系統區別與文件系統的一個關鍵特性。鎖機制用于管理對共享資源的并發訪問。Innodb存儲引擎在行級別上對表數據上鎖,這固然不錯。但是Innodb也會在多個地方使用鎖,從而允許多種不同資源提供并發訪問。例如,操作緩沖池匯總的LRU列表,刪除、添加、移動LRU列表中的元素,為了保證一致性,必須有鎖的介入,這就是latch鎖。

latchlock的區別

  latch一般稱為閂鎖(輕量級別的鎖),因為其要求鎖定的時間必須非常短。若持續的時間長,則應用的性能會非常差。在Innodb存儲引擎中,latch又可以分為mutex(互斥量)和RW-Lock(讀寫鎖)。

lock對象是事務,用來鎖定的是數據庫中的對象,如表、行、頁。并且一般lock的對象僅在事務commitrollback后進行釋放(不同事務隔離級別釋放的時間可能不同)。此外,lock,正如在大多數數據庫中一樣,是有死鎖機制的。

什么是latch?latch與lock的區別

同過show engine innodb mutex 進行查看latch

什么是latch?latch與lock的區別

name列顯示的是latch的信息以及源碼所在的位置(行數)。

latch的分類

分為:mutex:互斥量;有時候有些資源需要共享和并發,但是又不是分頻繁,所以向操作系統申請一個mutexmutex都是排他的。

   RW-LATCH : 讀寫鎖

latch的理解:

一個例子:

當我們在執行select 時,數據是緩存在buffer pool中的,多個線程并發訪問或者修改這個數據必然需要一個并發控制機制,這個就是latch

數據庫要訪問的數據必須先存在緩存中,而緩存一般比磁盤空間要小,數據緩沖使用hash表來記錄數據頁是否在內存中。在MySQL中對應的RW-Latcherrlog中說的很清楚,該RW-Latch是在buf0sea.cc658行創建的RW-Latch

errorlog 的壓測示例:

什么是latch?latch與lock的區別

根據日志我們可以分析到線程140140355766016要對記錄加一個x鎖,但是等待線程0x4c407b8線程的RW-Latch的釋放。

什么是latch?latch與lock的區別

latch爭用過程

1a x訪問鏈表

2b 排隊等待x解鎖 占了cpu,但是cpu發現你在等待,所以cpub踢出

3)鎖鏈的時間,就是找數據的時間。

4b知道很a快所以,b不去排隊,這是后去spin 也就是空轉cpu,然后再去看一下內存數據結構,a是否已解鎖

5b轉了一圈后,在bspin的時間段的時間中,c進來了,連續多次的spin后, 產生了os waits

6)操作系統將bcpu中踢出

latch鎖特點:

  • 1.不排隊

  • 2.spin

  • 3.os waits

  • 4.cpu繁忙

mutex:

內存結構 很小 數據庫從操作系統申請到的,不占用buffer pool,完全排他

mutex鎖的持有過程: 

  a線程持有想mutex內存數據結構中寫一個1

  b線程看到內存數據結構有數字, 那么就去spin

確認latch爭用類型:

(這就是在源碼中的173語句)由errorlog 得到的

什么是latch?latch與lock的區別

latch爭用的過程

鏈表上有一個鏈的保護機制latch,小內存結構,這時候有讀的線程a上來要讀取鏈,這個時候這個管理就變成r,讀鎖,當在鏈上找到數據的時候(),一找到就釋放讀鎖,b上來也要讀取,這時候一看是r,讀鎖是可以共享的,她也是對鏈進行訪問讀取的,c上來要修改鏈中的兩個塊的內容,一看是rrw是互斥的,不能夠同時進行,要么

1、主動要求退出cpu

2、空占著cpu資源(執行一段空代碼,loop,隔一段時間看看ab有沒有使用完(spin),但是在這個過程中因為c沒有排隊等待,所以可能在等待的過程中又有其他的線程上來霸占鏈,如果執行多次仍這樣,可能就sleep,退出cpu了)為什么空占(害怕操作系統看她閑的把他強行拖走),等(因為他知道ab占用了資源時間比較短,就是遍歷一條鏈的時間非常短)。

latch爭用的現象:

1latch爭用會表現為cpu繁忙

2latch爭用沒有排隊,等一段隨機的時間再回來看一看

監控指標

----------

SEMAPHORES

----------

OS WAIT ARRAY INFO: reservation count 2

OS WAIT ARRAY INFO: signal count 2

RW-shared spins 0, rounds 4, OS waits 2

RW-excl spins 0, rounds 0, OS waits 0

RW-sx spins 0, rounds 0, OS waits 0

Spin rounds per wait: 4.00 RW-shared, 0.00 RW-excl, 0.00 RW-sx

rounds的意思是每次詢問旋轉的參數

os waits:表示sleep,當突然增長比較快的時候,說明latch爭用比較嚴重

rw-shared spin 的次數

rw-excl spin的次數

latch爭用發生的原因

1、內存訪問太頻繁(不停地找)

2list鏈太長(鏈上掛10000個快,被持有的幾率太大)

所以有時候會增加instance的數量,把大pool切成小的pool,讓list鏈變的短一些

如何降低latch爭用:

如果出現latch爭用比較嚴重

1.優化sql,降低對內存讀的數量——效果比較明顯

2.增加instances的數量

如何準確發現解決latch

1.show engine Innodb mutex

2.查看什么類型的latch

3.定位sql

以上就是什么是latch?latch與lock的區別的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 亚洲成人福利在线观看 | 日韩精选在线 | 日韩无套 | 五月婷婷综合基地 | 色综合天天干 | 中文字幕字幕乱码熟 | 中文在线最新版天堂bt | 日本韩国欧美在线 | 日本红怡院亚洲红怡院最新 | 小香蕉影院 | 午夜片在线 | 一本到视频 | 天天躁日日躁狠狠躁欧美日韩 | 午夜老司机在线观看免费 | 午夜在线成人 | 日本视频在线免费 | 亚洲天堂免费视频 | 欧美亚洲中日韩中文字幕在线 | 欧美综合亚洲 | 天天拍拍夜夜出水 | 日韩r片| 日本视频不卡 | 日韩一区二区三区视频在线观看 | 欧美一级免费片 | 四虎国产精品永免费 | 色天天天综合色天天碰 | 伊人中文在线 | 亚洲美女色在线欧洲美女 | 亚欧成人一区二区 | 一二三四影视在线观看免费视频 | 亚洲狠狠成人综合网 | 亚洲成人激情片 | 中文字幕 一区 婷婷 在线 | 天天干天天操天天操 | 亚洲成a v人片在线观看 | 亚洲天堂视频在线免费观看 | 欧美一级黄色片在线观看 | 午夜国产精品久久久久 | 一区二区三区在线免费视频 | 日日日天天射天天干视频 | 亚洲第一男人网站 |