相對其他資料庫而言,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加鎖機制 根據型別可分為共享鎖 shared lock 和排他鎖 exclusive lock 或者叫讀鎖 read lock 和寫鎖 write lock 根據粒度劃分又分表鎖和行鎖。表鎖由資料庫伺服器實現,行鎖由儲存引擎實現。相對其他資料庫而言,mysql的鎖機制比較簡單,基最顯著的特...
鎖 JDK鎖 redis鎖 mysql鎖
在減庫存的 外麵包一層synchronized public string deductstock else 雙重檢查單例模式 public class singletontype6 public static singletontype6 getinstance return instance 利...
mysql會話鎖 Mysql鎖機制 寫鎖
1 準備資料 1.1 建表 1.1.1 建立 employee表 drop table if existsemployee create table if not existsemployee idint primary keyauto increment,namevarchar 40 dept i...