MySQL-行級鎖(行鎖、間隙鎖、臨鍵鎖)

文章目錄

  • 1、介紹
  • 2、查看意向鎖及行鎖的加鎖情況
  • 3、行鎖的演示
    • 3.1、普通的select語句,執行時,不會加鎖
    • 3.2、select * from stu where id =1 lock in share mode;
    • 3.3、共享鎖與共享鎖之間兼容。
    • 3.4、共享鎖與排他鎖之間互斥。
    • 3.5、排它鎖與排他鎖之間互斥
    • 3.6、無索引行鎖升級為表鎖
  • 4、間隙鎖&臨鍵鎖的演示
    • 4.1、索引上的等值查詢(唯一索引),給不存在的記錄加鎖時, 優化為間隙鎖
    • 4.2、索引上的等值查詢(非唯一普通索引),向右遍歷時最后一個值不滿足查詢需求時,next-keylock 退化為間隙鎖
    • 4.3、 索引上的范圍查詢(唯一索引)--會訪問到不滿足條件的第一個值為止

1、介紹

行級鎖,每次操作鎖住對應的行數據。鎖定粒度最小,發生鎖沖突的概率最低,并發度最高。應用在InnoDB存儲引擎中。

InnoDB的數據是基于索引組織的,行鎖是通過對索引上的索引項加鎖來實現的,而不是對記錄加的鎖。對于行級鎖,主要分為以下三類

行鎖(Record Lock):鎖定單個行記錄的鎖,防止其他事務對此行進行updatedelete。在RC、RR隔離級別下都支持。
在這里插入圖片描述

間隙鎖(Gap Lock):鎖定索引記錄間隙(不含該記錄),確保索引記錄間隙不變,防止其他事務在這個間隙進行 insert,產生幻讀。在RR隔離級別下都支持。
在這里插入圖片描述

臨鍵鎖(Next-Key Lock)行鎖間隙鎖組合,同時鎖住數據,并鎖住數據前面的間隙Gap。在RR隔離級別下支持。
在這里插入圖片描述

2、查看意向鎖及行鎖的加鎖情況

select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;

3、行鎖的演示

在這里插入圖片描述

3.1、普通的select語句,執行時,不會加鎖

在這里插入圖片描述

3.2、select * from stu where id =1 lock in share mode;

在這里插入圖片描述

3.3、共享鎖與共享鎖之間兼容。

在這里插入圖片描述

3.4、共享鎖與排他鎖之間互斥。

在這里插入圖片描述

3.5、排它鎖與排他鎖之間互斥

在這里插入圖片描述

3.6、無索引行鎖升級為表鎖

在這里插入圖片描述
在這里插入圖片描述

4、間隙鎖&臨鍵鎖的演示

4.1、索引上的等值查詢(唯一索引),給不存在的記錄加鎖時, 優化為間隙鎖

在這里插入圖片描述

4.2、索引上的等值查詢(非唯一普通索引),向右遍歷時最后一個值不滿足查詢需求時,next-keylock 退化為間隙鎖

在這里插入圖片描述

4.3、 索引上的范圍查詢(唯一索引)–會訪問到不滿足條件的第一個值為止

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38897.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38897.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38897.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

論文調研_Awesome-Binary-Similarity

0. 概述 對 Awesome-Binary-Similarity 中列出的論文進行調研,重點總結這些論文的研究動機與未來研究方向。 1. 調研內容 論文名稱發表時間發表期刊期刊等級研究單位BinaryAI: Binary Software Composition Analysis via Intelligent Binary Source Code Matching2024年ICSE…

每日一題---OJ題:分隔鏈表

片頭 嗨!小伙伴們,大家好!今天我們一起來看看這道題----分隔鏈表 emmmm,這道題,看描述應該不算太難,我們一起來畫一畫圖唄! 題目讀懂了,那么如何破解這道題呢? 思路&…

microApp vue3+vite+ts 子應用接入改造

公司做了一個平臺,使用的是microApp,需要把現有的一些系統作為子系統改造一下接入這個平臺,所以下面我說的都是子應用的改造,vue2的改造比較簡單,主要的vue3+vite+ts的改造。 參考官網 1、設置跨應用支持 vite默認開啟跨域支持,不需要額外配置。 2、注冊卸載函數 // …

nand flash spec

nand flash簡介 nand flash是一種非易失性存儲器。它具有高存儲密度、低成本和高耐用性的特點。 nand flash的特性是非易失性,即在電源關閉的情況下,數據仍然保留。 nand flash的存儲單元由浮動柵極晶體管組成,每個存儲單元可以存儲一位或多…

短視頻世界對我溫柔以待:成都柏煜文化傳媒有限公司

短視頻世界對我溫柔以待 在繁忙的都市生活中,每個人都在為生活奔波,為夢想努力。而在這個快節奏的時代里,短視頻如同一股清流,以其獨特的魅力,為我帶來了片刻的寧靜與溫柔。它像是一個無聲的朋友,在我疲憊…

(必看圖文)Hadoop集群安裝及MapReduce應用(手把手詳解版)

前言 隨著大數據時代的到來,處理和分析海量數據已成為企業和科研機構不可或缺的能力。Hadoop,作為開源的分布式計算平臺,因其強大的數據處理能力和良好的可擴展性,成為大數據處理領域的佼佼者。本圖文教程旨在幫助讀者理解Hadoop集…

Mysql面試合集

概念 是一個開源的關系型數據庫。 數據庫事務及其特性 事務:是一系列的數據庫操作,是數據庫應用的基本邏輯單位。 事務特性: (1)原子性:即不可分割性,事務要么全部被執行,要么就…

代碼隨想錄1數組

1 二分查找 Leetcode704 1 [l,r]區間 l 0, r nums.length-1; while(l<r) 因為lr有意義 2 [l,r)區間 l 0, r nums.length; while(l<r) Leetcode35 class Solution {public int searchInsert(int[] nums, int target) {int l0,rnums.length;while(l<r){int m l(…

使用設計模式來增強你的 SpringBoot 開發

SpringBoot 是一個出色的框架&#xff0c;可以快速構建強大而高效的應用程序。但你是否知道設計模式可以將 SpringBoot 開發提升到一個新的水平&#xff1f; ? 設計模式的重要性&#xff1a;了解設計模式如何促進代碼的可重用性、可維護性和整體應用程序健康。 ? SpringBoot…

在Spring Data JPA中使用@Query注解

目錄 前言示例簡單示例只查詢部分字段&#xff0c;映射到一個實體類中只查詢部分字段時&#xff0c;也可以使用List<Object[]>接收返回值再復雜一些 前言 在以往寫過幾篇spring data jpa相關的文章&#xff0c;分別是 Spring Data JPA 使用JpaSpecificationExecutor實現…

python 筆試面試八股(自用版~)

1 解釋型和編譯型語言的區別 解釋是翻譯一句執行一句&#xff0c;更靈活&#xff0c;eg&#xff1a;python; 解釋成機器能理解的指令&#xff0c;而不是二進制碼 編譯是整個源程序編譯成機器可以直接執行的二進制可運行的程序&#xff0c;再運行這個程序 比如c 2 簡述下 Pyth…

運維鍋總詳解RocketMQ

本文嘗試從Apache RocketMQ的簡介、主要組件及其作用、3種部署模式、Controller集群模式工作流程、最佳實踐等方面對其進行詳細分析。希望對您有所幫助&#xff01; 一、Apache RocketMQ 簡介 Apache RocketMQ 是一個開源的分布式消息中間件&#xff0c;由阿里巴巴集團開發并…

祝賀《華為戰略管理法:DSTE實戰體系》被《中國企業家》雜志評為企業家枕邊書50本之一(宏觀戰略類書籍)

祝賀《華為戰略管理法&#xff1a;DSTE實戰體系》被《中國企業家》雜志評為企業家枕邊書50本之一 2024年4月23日&#xff08;周二&#xff09;下午13:00&#xff0c;《中國企業家》雜志如期舉辦“每天都是讀書日”線下活動。 《中國企業家》雜志攜手商界大咖共同推選50本枕邊書…

Vue.js中的計算屬性

Vue.js中的計算屬性&#xff08;computed properties&#xff09;是用于聲明響應式依賴的屬性。它們會根據它們的依賴進行緩存&#xff0c;并且只有在相關依賴發生改變時才會重新求值。這使得它們非常適合用來處理復雜邏輯和數據處理。 基本用法 在Vue實例中&#xff0c;可以…

鐳速實現AD域集成助力企業文件安全傳輸管控

在當今這個信息量爆炸擴張的年代&#xff0c;企業數據宛如一座蘊藏無限價值的寶庫&#xff0c;它不僅是企業核心競爭力的載體&#xff0c;也成為了各種潛在風險的聚焦點。隨著數字化轉型步伐的加快&#xff0c;安全文件傳輸的管理控制顯得尤為重要&#xff0c;它構成了保護企業…

各類排序方法 歸并排序 擴展練習 逆序對數量

七月挑戰一個月重刷完Y總算法基礎題&#xff0c;并且每道題寫詳細題解 進度:(3/106) 歸并排序的思想也是分而治之 歸并優點&#xff1a;速度穩定,排序也穩定 排序也穩定&#xff08;數組中有兩個一樣的值&#xff0c;排序之后他們的前后順序不發生變化&#xff0c;我們就說…

Leetcode 2065. 最大化一張圖中的路徑價值(DFS / 最短路)

Leetcode 2065. 最大化一張圖中的路徑價值 暴力DFS 容易想到&#xff0c;從0點出發DFS&#xff0c;期間維護已經走過的距離&#xff08;時間&#xff09;和途徑點的權值之和&#xff0c;若訪問到0點則更新答案&#xff0c;若下一步的距離與已走過的距離和超出了maxTime&#…

oracle sql語句 排序 fjd = ‘0101‘ 排在 fjd = ‘0103‘ 的前面

要實現這個排序需求&#xff0c;你可以使用 CASE 表達式來自定義排序邏輯。假設你有一個表格名為 your_table&#xff0c;并且有一個字段 fjd 存儲類似 ‘0101’, ‘0103’ 這樣的值&#xff0c;你可以這樣編寫 SQL 查詢&#xff1a; SELECT * FROM your_table ORDER BY CASE …

專題六:Spring源碼之初始化容器BeanFactory

上一篇咱們通過一個例子介紹初始化容器上下文相關內容&#xff0c;并通過兩個示例代碼看到了Spring在設計階段為我預留的擴展點&#xff0c;和我們應該如何利用這兩個擴展點在Spring初始化容器上下文階段為我們提供服務。這一篇咱們接著往下看。 老這樣子下回到refresh方法上來…

第55期:MySQL 頻繁 Crash 怎么辦?

社區王牌專欄《一問一實驗&#xff1a;AI 版》全新改版歸來&#xff0c;得到了新老讀者們的關注。其中不乏對 ChatDBA 感興趣的讀者前來咨詢&#xff0c;表達了想試用體驗 ChatDBA 的意愿&#xff0c;對此我們表示感謝 &#x1f91f;。 目前&#xff0c;ChatDBA 還在最后的準備…