欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中的行級鎖詳解

 更新時間:2025年03月03日 09:38:25   作者:WannaRunning  
MySQL中的行級鎖是InnoDB存儲引擎提供的一種細粒度鎖,基于索引實現(xiàn),MySQL中鎖有很多種,其中從鎖的粒度來區(qū)分的話可以分為表級鎖,行級鎖,頁級鎖,本文主要介紹MySQL中的行級鎖,感興趣的朋友一起看看吧

MySQL中鎖有很多種,其中從鎖的粒度來區(qū)分的話可以分為表級鎖,行級鎖,頁級鎖。

本文主要介紹下

行級鎖

MySQL中的行級鎖是MySQL中InnoDB存儲引擎提供的一種細粒度的鎖,基于索引實現(xiàn)的,鎖是加在索引上的,而不是數(shù)據(jù)行本身。

同樣是行級鎖,InnoDB存儲引擎對于其實現(xiàn)還可以細分為記錄鎖(Record Lock),間隙鎖(Gap Lock),臨鍵鎖(Next-Key Lock)和插入意向鎖(Insert Intention Lock)。

記錄鎖(Record Lock)

記錄鎖也就是常說的行鎖,顧名思義其鎖定的是某一行數(shù)據(jù)。

-- id = 1 的行會被加記錄排他鎖
update product_sale_record set sold_num = sold_num + 1 where id = 1;
-- id = 1 的行會被加共享鎖
select * from product_sale_record  where id = 1; LOCK IN SHARE MODE;

場景舉例

假設兩個事務A,B并發(fā)執(zhí)行下面的SQL:

start transaction;
update t_shop_product_sale_record set sold_num = sold_num +1 where id = 1;
commit;

當事務A執(zhí)行 update 時會對 id = 1 這行數(shù)據(jù)的排它鎖。

在事務A未提交的情況下,如果開啟事務B執(zhí)行 update ,會出現(xiàn)鎖等待然后超時:Lock wait timeout exceeded; try restarting transaction

間隙鎖(Gap Lock)

鎖定索引記錄之間的間隙,防止其他事務在范圍內插入新數(shù)據(jù)。

-- id 在 1 和 10 之間的間隙會被加排他鎖。
update product_sale_record WHERE id > 1 AND id < 10;
-- id 在 1 和 10 之間的間隙會被加共享鎖。
select * from product_sale_record  WHERE id > 1 AND id < 10 LOCK IN SHARE MODE;

臨鍵鎖(Next-Key Lock)

臨鍵鎖可以理解為是記錄鎖和間隙鎖的組合,鎖定索引記錄及其前面的間隙。

-- id > 1 的記錄及其前面的間隙會被加排他鎖
update product_sale_record WHERE id > 1;
-- id > 1 的記錄及其前面的間隙會被加共享鎖
select * from product_sale_record where id > 1 LOCK IN SHARE MODE;

到此這篇關于MySQL中的行級鎖的文章就介紹到這了,更多相關mysql行級鎖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL索引下推的深入探索

    MySQL索引下推的深入探索

    這篇文章主要介紹了MySQL的索引下推,索引下推是為了解決在過濾條件時,可能導致大量的數(shù)據(jù)行被檢索出來,但實際上只有很少的行滿足WHERE子句中的所有條件的情況,需要的朋友可以參考下
    2022-07-07
  • mysql use命令選擇數(shù)據(jù)庫詳解

    mysql use命令選擇數(shù)據(jù)庫詳解

    這篇文章主要介紹了mysql 使用use命令選擇數(shù)據(jù)庫的相關資料,需要的朋友可以參考下
    2016-09-09
  • MySQL如何修改字段類型和字段長度

    MySQL如何修改字段類型和字段長度

    這篇文章主要介紹了MySQL如何修改字段類型和字段長度,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 數(shù)據(jù)庫sql語句優(yōu)化

    數(shù)據(jù)庫sql語句優(yōu)化

    今天小編就為大家分享一篇關于數(shù)據(jù)庫sql語句優(yōu)化,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 解析MySQL?join查詢的原理

    解析MySQL?join查詢的原理

    這篇文章主要介紹了MySQL?join查詢的原理,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • mysql中general_log日志知識點介紹

    mysql中general_log日志知識點介紹

    這篇文章主要介紹了mysql中general_log日志知識點的介紹以及其他相關內容,以后興趣的朋友們學習下。
    2019-08-08
  • CenOS6.7下mysql 8.0.22 安裝配置方法圖文教程

    CenOS6.7下mysql 8.0.22 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了CenOS6.7下mysql 8.0.22 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • MySQL中TINYINT、INT 和 BIGINT的具體使用

    MySQL中TINYINT、INT 和 BIGINT的具體使用

    MySQL提供了多種整數(shù)類型來滿足不同的數(shù)據(jù)存儲需求,本文主要介紹了MySQL中TINYINT、INT 和 BIGINT的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • MySQL在不知道列名情況下的注入詳解

    MySQL在不知道列名情況下的注入詳解

    這篇文章主要給大家介紹了關于MySQL在不知道列名情況下的注入的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03
  • MySQL表分區(qū)的幾種實現(xiàn)

    MySQL表分區(qū)的幾種實現(xiàn)

    本文主要介紹了MySQL表分區(qū)的幾種實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08

最新評論