MySQL鎖的型別和粒度 MySql 鎖分類

2021-10-18 21:14:08 字數 710 閱讀 5603

mysql加鎖機制:

根據型別可分為共享鎖(shared lock)和排他鎖(exclusive lock)或者叫讀鎖(read lock)和寫鎖(write lock)。

根據粒度劃分又分表鎖和行鎖。表鎖由資料庫伺服器實現,行鎖由儲存引擎實現。

相對其他資料庫而言,mysql的鎖機制比較簡單,基最顯著的特點是不同的儲存引擎支援不同的鎖機制。比如,myisam和memory儲存引擎採用的是表級鎖(table-level locking);bdb儲存引擎採用的是頁面鎖(page-level locking),但也去支援表級鎖;innodb儲存引擎既支援行級鎖,也技術表級鎖,但預設情況 下是採用行級鎖。

mysql這3種鎖的特性可大致歸納如下:

表級鎖: 開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低。

行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的概率最低,併發度最高。

頁面鎖:開銷和回銷時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,併發度一般。

可以通過檢查table_locks_waited和table_locks_immediate狀態變數來分析系統上的表鎖定爭奪:

如果table_locks_waited的值較高,則說明存在著較嚴重的表級鎖急用用情況。

MySQL併發控制之讀寫鎖和鎖粒度詳解

無論何時,只要有多個查詢需要在同一時刻修改資料,都會產生併發控制的問題。本章的目的是討論mysql在兩個層面的併發控制 伺服器層與儲存引擎層。併發控制是 乙個內容龐大的話題,有大量的理 獻對其進行過詳細的論述。本章只簡要地討論 mysql如何控制併發讀寫,因此讀者需要有相關的知識來理解本章接下來的內...

控制鎖的粒度

日期 2009年5月3日 翻譯 張洪舉 原文 在sql server 7.0 的所有版本中,引擎可以鎖定行 頁或整個表。此外,即使通過獲取行或頁鎖的方式啟動了查詢,如果獲取了太多的鎖,sql server 也可能會將其提公升到乙個表鎖。每個鎖都需要使用記憶體,所以,當以乙個表鎖公升級替換成千上萬的細...

mysql鎖粒度是什麼意思 mysql鎖粒度是什麼

mysql鎖粒度就是我們通常所說的鎖級別。資料庫引擎具有多粒度鎖定,允許乙個事務鎖定不同型別的資源。mysql資料庫有三種鎖的級別,分別是 頁級鎖 表級鎖和行級鎖。資料庫引擎具有多粒度鎖定,允許乙個事務鎖定不同型別的資源。為了儘量減少鎖定的開銷,資料庫引擎自動將資源鎖定在適合任務的級別。鎖定在較小的...