<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MySQL next-key lock 加鎖范圍總結

          共 1387字,需瀏覽 3分鐘

           ·

          2021-06-11 08:32

          前言

          三篇文章分別通過實際操作,介紹了主鍵、非主鍵唯一索引、普通索引、普通字段四個方面介紹了加鎖的范圍。

          本篇文章再做一個總結。

          1

          data_locks

          select * from performance_schema.data_locks;
          LOCK_MODELOCK_DATA鎖范圍
          X,REC_NOT_GAP1515 那條數據的行鎖
          X,GAP1515 那條數據之前的間隙,不包含 15
          X1515 那條數據的間隙,包含 15
          1. LOCK_MODE = X 是前開后閉區(qū)間;
          2. X,GAP 是前開后開區(qū)間(間隙鎖);
          3. X,REC_NOT_GAP 行鎖。

          這個單獨介紹,是希望我理解的沒有錯誤,如果大佬看到了,錯誤之處一定要幫忙指正出來。

          2

          主鍵索引

          1. 加鎖時,會先給表添加意向鎖,IX 或 IS;
          2. 加鎖是如果是多個范圍,是分開加了多個鎖,每個范圍都有鎖;(這個可以實踐下 id < 20 的情況)
          3. 主鍵等值查詢,數據存在時,會對該主鍵索引的值加行鎖 X,REC_NOT_GAP;
          4. 主鍵等值查詢,數據不存在時,會對查詢條件主鍵值所在的間隙添加間隙鎖 X,GAP
          5. 主鍵等值查詢,范圍查詢時情況則比較復雜:
            1. 8.0.17 版本是前開后閉,而 8.0.18 版本及以后,修改為了前開后開區(qū)間;
            2. 臨界 <= 查詢時,8.0.17 會鎖住下一個 next-key 的前開后閉區(qū)間,而 8.0.18 及以后版本,修復了這個 bug。

          3

          非主鍵唯一索引

          1. 非主鍵唯一索引等值查詢,數據存在,for update 是會在主鍵加鎖的,而 for share 只有在走覆蓋索引的情況下,會僅在自己索引上加鎖;
          2. 非主鍵索引等值查詢,數據不存在,無論是否索引覆蓋,相當于一個范圍查詢,僅僅會在非主鍵索引上加鎖,加的還是間隙鎖,前開后開區(qū)間;
          3. 在非主鍵唯一索引范圍查詢時,不是覆蓋索引的時候,會對相應的范圍加前開后閉區(qū)間,并且如果存在數據,會對對應的主鍵加行鎖;
          4. 在非主鍵唯一索引范圍查詢時,如果是覆蓋索引時,會對所有的后閉區(qū)間對應的主鍵,加行鎖;
          5. 在非主鍵唯一索引加鎖時,還是存在 next-key 鎖住下一個區(qū)間的 bug。

          4

          普通索引

          1. 普通索引等值查詢,因為不能確定唯一性,所以即使定位到記錄,也是會向后查詢,直到查詢到不為該值的記錄,從而鎖定該值的區(qū)間;
          2. 普通索引的鎖也是加載該索引上的,如果涉及到存在的記錄,會對該主鍵加行鎖;
          3. 普通索引的范圍查詢,同樣出現 next-key 查詢下一個區(qū)間的 bug。

          5

          普通字段

          普通字段查詢,會查詢全表,這里鎖的話就會鎖住主鍵的所有區(qū)間。

          6

          總結

          通過實際操作,最大的感受就是不能眼高手低,看書也好,看文章也罷,一定要實際操作。

          紙上得來終覺淺。


          - <End /> -




          歷史文章 | 相關推薦




          瀏覽 30
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品无人区一区二区三区聊斋艳谭 | 免费看毛片电影 | 欧美亚黄片| 无码在线高清观看 | 香蕉操逼视频 |