最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中的行級鎖詳解

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

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

本文主要介紹下

行級鎖

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

同樣是行級鎖,InnoDB存儲引擎對于其實(shí)現(xiàn)還可以細(xì)分為記錄鎖(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;

場景舉例

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

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

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

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

間隙鎖(Gap Lock)

鎖定索引記錄之間的間隙,防止其他事務(wù)在范圍內(nèi)插入新數(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;

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

相關(guān)文章

  • step by step配置mysql復(fù)制的具體方法

    step by step配置mysql復(fù)制的具體方法

    每個服務(wù)器必須有唯一的server-id,默認(rèn)為1,為了防止沖突,一般建議設(shè)置為IP地址的后幾位,本例設(shè)置為12,通過修改主庫的my.cnf文件實(shí)現(xiàn)
    2013-09-09
  • MySQL主從延遲根因診斷法全面詳解

    MySQL主從延遲根因診斷法全面詳解

    在高并發(fā)場景下,MySQL主從延遲(Replication Lag)是導(dǎo)致數(shù)據(jù)不一致、業(yè)務(wù)受損的定時炸彈,本文系統(tǒng)性地介紹了MySQL主從延遲問題的診斷與解決方案,需要的朋友可以參考下
    2026-05-05
  • mysql的內(nèi)連接,左連接和右鏈接查詢詳解

    mysql的內(nèi)連接,左連接和右鏈接查詢詳解

    這篇文章主要為大家詳細(xì)介紹了mysql的內(nèi)連接,左連接和右鏈接查詢,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • mysql VARCHAR的最大長度到底是多少

    mysql VARCHAR的最大長度到底是多少

    今天群里有人問varchar 不是最大應(yīng)該只可以設(shè)置65532(第一個字節(jié)+兩個長度字節(jié))嗎 ,但是為什么可以設(shè)置成65533
    2012-10-10
  • MySQL安裝服務(wù)時提示:Install/Remove?of?the?Service?Denied解決

    MySQL安裝服務(wù)時提示:Install/Remove?of?the?Service?Denied解決

    今天給新電腦安裝了mysql,本來好好的,卻報了個bug,就記錄下吧,這篇文章主要給大家介紹了關(guān)于MySQL安裝服務(wù)時提示:Install/Remove?of?the?Service?Denied的解決辦法,需要的朋友可以參考下
    2023-03-03
  • MySql 8.0及對應(yīng)驅(qū)動包匹配的注意點(diǎn)說明

    MySql 8.0及對應(yīng)驅(qū)動包匹配的注意點(diǎn)說明

    這篇文章主要介紹了MySql 8.0及對應(yīng)驅(qū)動包匹配的注意點(diǎn)說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 常見php與mysql中文亂碼問題解決辦法

    常見php與mysql中文亂碼問題解決辦法

    MySQL對中文的支持程度還是很有限的,尤其是新手,但凡出現(xiàn)亂碼問題,就會頭大。
    2014-09-09
  • 解決MySQL時區(qū)日期時差8個小時的問題

    解決MySQL時區(qū)日期時差8個小時的問題

    本文主要介紹了解決MySQL時區(qū)日期時差8個小時的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • MySQL與PHP的基礎(chǔ)與應(yīng)用專題之?dāng)?shù)據(jù)查詢

    MySQL與PHP的基礎(chǔ)與應(yīng)用專題之?dāng)?shù)據(jù)查詢

    MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL?AB?公司開發(fā),屬于?Oracle?旗下產(chǎn)品。MySQL?是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎(chǔ)應(yīng)用,本篇從數(shù)據(jù)的查詢開始
    2022-02-02
  • 淺談為什么Mysql數(shù)據(jù)庫盡量避免NULL

    淺談為什么Mysql數(shù)據(jù)庫盡量避免NULL

    這篇文章主要介紹了淺談為什么Mysql數(shù)據(jù)庫盡量避免NULL,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評論

驻马店市| 如东县| 柏乡县| 永修县| 中江县| 乳源| 宜春市| 长汀县| 徐闻县| 绵竹市| 青岛市| 巫山县| 天等县| 肥乡县| 清水县| 汽车| 永修县| 丰都县| 湖南省| 横峰县| 吐鲁番市| 察隅县| 乐清市| 琼结县| 澄迈县| 特克斯县| 龙门县| 安宁市| 景宁| 上犹县| 长宁县| 德庆县| 温州市| 吴桥县| 涟水县| 抚远县| 台安县| 英超| 阿坝县| 麻栗坡县| 南京市|