MySQL中是如何insert數據的

正常insert數據,MySQL并不會顯式加鎖,而是通過聚簇索引的trx_id索引作為隱式鎖來保護記錄的。比如兩個事務對一個非唯一的索引情況添加,會造成幻讀
在這里插入圖片描述
但在某些特殊情況下,隱式鎖會轉變為顯式鎖

  • 記錄之間有間隙鎖
  • insert的記錄與已有記錄的唯一索引沖突

記錄之間有間隙鎖

每插入一條新記錄,都需要看一下待插入記錄的下一條記錄上是否已經被加了間隙鎖,如果已加間隙鎖,此時會生成一個插入意向鎖,然后鎖的狀態設置為等待狀態(PS:MySQL 加鎖時,是先生成鎖結構,然后設置鎖的狀態,如果鎖狀態是等待狀態,并不是意味著事務成功獲取到了鎖,只有當鎖狀態為正常狀態時,才代表事務成功獲取到了鎖),現象就是 Insert 語句會被阻塞。
在這里插入圖片描述

# 事務 A
mysql> begin;
Query OK, 0 rows affected (0.01 sec)mysql> select * from t_order where order_no = 1006 for update;# 事務 B 插入一條記錄
mysql> begin;
Query OK, 0 rows affected (0.01 sec)mysql> insert into t_order(order_no, create_date) values(1010,now());
### 阻塞狀態。。。。

可以看到,事務 B 的狀態為等待狀態(LOCK_STATUS: WAITING),因為向事務 A 生成的 next-key 鎖(記錄鎖+間隙鎖)范圍(1005, +∞] 中插入了一條記錄,所以事務 B 的插入操作生成了一個插入意向鎖(LOCK_MODE: X,INSERT_INTENTION),鎖的狀態是等待狀態,意味著事務 B 并沒有成功獲取到插入意向鎖,因此事務 B 發生阻塞。

遇到唯一鍵沖突

插入失敗,會對這條記錄上S型鎖

  • 如果主鍵索引重復,插入新記錄的事務會給已存在的主鍵值重復的聚簇索引記錄添加 S 型記錄鎖。
  • 如果唯一二級索引重復,插入新記錄的事務都會給已存在的二級索引列值重復的二級索引記錄添加 S 型 next-key 鎖。(但假設有這么一種情況,目前表里有二級索引id=1~5的數據記錄,事務A插入一個id=6,是可以的,不會被阻塞,也沒有上顯式鎖其實,只有隱式鎖。但假設事務B想再插入id=6的數據,A對id=6的隱式鎖會升級為顯式X鎖,B此時相當于想申請id=6的S鎖,會被阻塞)

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

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

相關文章

Channel Attention前言——一二階統計量

統計量 簡述 ? 一階統計量和二階統計量是統計學中常用的兩類統計量。一階統計量是指只考慮隨機變量本身的統計量,而二階統計量則是指考慮隨機變量之間關系的統計量。 一階統計量 一階統計量是指只考慮隨機變量本身的統計量,通常包括以下幾種&#x…

二叉樹的非遞歸遍歷(詳解)

二叉樹非遞歸遍歷原理 使用先序遍歷的方式完成該二叉樹的非遞歸遍歷 通過添加現有項目的方式將原來編寫好的棧文件導入項目中 目前項目存在三個文件一個頭文件,兩個cpp文件: 項目頭文件的代碼截圖:QueueStorage.h 項目頭文件的代碼&#xff…

達夢(主備)搭建

一、服務器配置 1.擴展基礎盤 磁盤分區 /sbin/fdisk /dev/vda<<EOF &> /dev/null p n 4p w EOF 硬盤刷新 partx -s /dev/vda echo "Disk Partition /dev/vda4 Create OK!" pvcreate /dev/vda4 rootlvnamedf -h|grep "\-root"|awk {prin…

全電動注塑機市場分析:全球市場規模將達到223.23億美元

注射成型機(簡稱注射機或注塑機)是將熱塑性塑料或熱固性料利用塑料成型模具制成各種形狀的塑料制品的主要成型設備。 注射成型是通過注塑機和模具來實現的。 注塑機通常由注射系統、合模系統、液壓傳達動系統、電氣控制系統、潤滑系統、加熱及冷卻系統、安全監測系統等組成。 注…

如何運用gpt改寫出高質量的文章 (1)

大家好&#xff0c;今天來聊聊如何運用gpt改寫出高質量的文章 (1)&#xff0c;希望能給大家提供一點參考。 以下是針對論文重復率高的情況&#xff0c;提供一些修改建議和技巧&#xff1a; 如何運用GPT改寫出高質量的文章 一、引言 隨著人工智能技術的飛速發展&#xff0c;自然…

大一C語言作業 12.8

1.C 對一維數組初始化時&#xff0c;如果全部元素都賦了初值&#xff0c;可以省略數組長度。 這里沒有指定數組長度&#xff0c;編譯器會根據初始化列表的元素個數來確定數組長度。 2.C 在C語言中&#xff0c;字符數組是不能用賦值運算符直接賦值的。 3.C 在二維數組a中&#x…

《C++新經典設計模式》之第20章 訪問者模式

《C新經典設計模式》之第20章 訪問者模式 訪問者模式.cpp 訪問者模式.cpp #include <iostream> #include <list> #include <memory> using namespace std;// 提供一個作用于某對象結構中的各元素的操作表示&#xff0c;便可以在不改變各元素類的前提下定義&…

springboot(ssm寢室小賣部系統 宿舍小商店網站Java(codeLW)

springboot(ssm寢室小賣部系統 宿舍小商店網站Java(code&LW) 開發語言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服務器&#xff1a;tomcat 數據庫&#xff1a;mysql 5.7&#xff08;或8.0&#x…

【力扣100】7.無重復字符的最長子串

添加鏈接描述 class Solution:def lengthOfLongestSubstring(self, s: str) -> int:# 思路是使用隊列&#xff0c;加入一次取一個最大值&#xff0c;然后如果重復&#xff0c;則隊列出到沒有重復值位置# 但是這個隊列其實使用數組實現的strlist[]temp0result0if len(s)0:re…

字符串指令集

字符串指令的格式 例子1就成功發送了指令 例子2就是發送的字符串有誤 查詢當前位置就會在附加信息中返回當前座位的坐標 第一個指令的參數就是閃燈的兩個參數 如第一個示例就是10ms On Time 第二個就是Off Time 使用標準庫來接收字符串命令 字符串指令的接收 因為一個指令就是…

科技改變旅游,道觀漫游可視化:智能化管理助力道觀游覽

道觀漫游可視化是一種通過技術手段實現道觀游覽的可視化展示方式&#xff0c;讓游客能夠更加直觀地了解道觀的歷史、文化和建筑特色。 隨著旅游業的不斷發展&#xff0c;道觀漫游可視化已經成為了旅游行業中的一個重要方向&#xff0c;吸引了越來越多的游客前來體驗。 道觀漫游…

打死都不要進外包,看看我在阿里外包的2年...

我18年畢業于一個普通二本學校&#xff0c;是一個很不出名的小本科。大學期間專業知識也沒有去認真的學習&#xff0c;所以畢業的時候就隨便找了一份工作&#xff0c;在一個小公司做功能測試。 記得那時候薪資大概是6k左右&#xff0c;因為是在工廠&#xff0c;工作環境很差&a…

《Spring Cloud Alibaba 從入門到實戰》理論知識篇

基礎知識篇 理論篇 俗話說&#xff0c;沒有最好的架構&#xff0c;只有最合適的架構。 微服務架構也是隨著信息產業的發展而出現的最有普遍適用性的一套架構模式。 通常來說&#xff0c;我們認為架構發展歷史經歷了這樣一個過程&#xff1a;單體架構 -> SOA 面向服務架構 …

springboot智慧導診系統源碼:根據患者癥狀匹配掛號科室

一、系統概述 醫院智慧導診系統是在醫療中使用的引導患者自助就診掛號&#xff0c;在就診的過程中有許多患者不知道需要掛什么號&#xff0c;要看什么病&#xff0c;通過智慧導診系統&#xff0c;可輸入自身疾病的癥狀表現&#xff0c;或選擇身體部位&#xff0c;在經由智慧導診…

微型5G智能網關助力打造智能清潔機器人

智能機器人不斷融入我們的生活&#xff0c;提供了越來越多樣化的服務&#xff0c;例如專用于衛生清潔的機器人&#xff0c;就已經廣泛應用于酒店、體育館、大型商場、寫字樓、工地等各種場景&#xff0c;相較于人工&#xff0c;機器人在此類具有高度重復性、勞動量大的工作中具…

C++作業6

以下是一個簡單的比喻&#xff0c;將多態概念與生活中的實際情況相聯系&#xff1a; 比喻&#xff1a;動物園的講解員和動物表演 想象一下你去了一家動物園&#xff0c;看到了許多不同種類的動物&#xff0c;如獅子、大象、猴子等。現在&#xff0c;動物園里有一位講解員&…

用23種設計模式打造一個cocos creator的游戲框架----(五)工廠方法模式

1、模式標準 模式名稱&#xff1a;工廠方法模式 模式分類&#xff1a;創建型 模式意圖&#xff1a;定義一個用于創建對象的接口&#xff0c;讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。 結構圖&#xff1a; 適用于&#xff1a; 1、當一個類不知道它…

failed to install plugin grafana 插件安裝失敗

升級時忽略plugins 權限問題&#xff0c;導致安裝插件失敗&#xff01;調整權限即可

042:el-table表格表頭自定義高度(親測好用)

第042個 查看專欄目錄: VUE ------ element UI 專欄目標 在vue和element UI聯合技術棧的操控下&#xff0c;本專欄提供行之有效的源代碼示例和信息點介紹&#xff0c;做到靈活運用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安裝、引用&#xff0c;模板使…

Shrio 安全框架

目錄 前言 1.介紹 2.整合 Shiro 到 Spring Boot 3.Shiro 相關配置 總結 前言 幾乎所有涉及用戶的系統都需要進行權限管理&#xff0c;權限管理涉及到一個系統的安全。Spring Boot 的安全框架整合方案中還有一個璀璨的明珠&#xff1a;Shrio。 1.介紹 Shiro是一款由Java 編…