技術主題
間隙鎖在mysql中經常使用到,今天就聊一聊mysql的間隙鎖的內容。
間隙鎖是為了解決幻讀的問題,并且在當前讀的場景下解決的。
當前讀包含:update,delete,insert,select…lock in share mode,select…for update
技術原理
一基本概念
1、行鎖:給某一行進行加鎖
2、間隙鎖:兩個值之間的間隙,為解決幻讀問題,innodb引入的新鎖,間隙鎖(Gap Lock)
3、間隙鎖Gap,左右都是開區(qū)間,間隙鎖+行鎖稱next-key鎖
二幻讀
幻讀指的是一個事務在前后兩次查詢同一個范圍的時候,后一次的查詢看到了之前一次沒有看到的行
三次查詢的sql一樣,但是結果不一樣,稱為幻讀,后一次的查詢中查到了前一次查詢沒有看到的行
幻讀只有在當前讀才會出現(xiàn)的現(xiàn)象。
三為什么會出現(xiàn)幻讀
即使把所有的行都加上鎖,一旦有別的會話插入新的記錄,無法阻止幻讀的產生,文章來源:http://www.zghlxwxcb.cn/news/detail-529264.html
1)session A 執(zhí)行 select … for update 語句&#x文章來源地址http://www.zghlxwxcb.cn/news/detail-529264.html
到了這里,關于聊一聊mysql中的間隙鎖的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!