1. 程式人生 > >MySQL鎖的分類及算法

MySQL鎖的分類及算法

不包含 The 不兼容 lock 兩個 阻止 註意 thead 分別是

MySQL中鎖包含表級鎖和行級鎖兩個大類。表級鎖是意向鎖,有IX,IS,一般在行級鎖之前使用;行級鎖則是傳統的S和X鎖。這些鎖的兼容特性如下:

IS IX S X
IS 兼容 兼容 兼容 不兼容
IX 兼容 兼容 不兼容 不兼容
S 兼容 不兼容 兼容 不兼容
X 不兼容 不兼容 不兼容 不兼容

InnoDB存儲引擎中行鎖算法有3種,分別是:
* Record Lock 單個行記錄上鎖

  • Gap Lock 間隙鎖,鎖定一個範圍,但不包含記錄本身
  • Next-Key Lock GapLock+RecordLock

Record Lock比較容易理解,GapLock需要註意的是,它鎖定的範圍,既包含左間隙,也包含右間隙。Gap Lock的作用,是為了阻止多個事務將記錄插入到同一個範圍內,從而導致幻影讀。

MySQL鎖的分類及算法