mysql死鎖分析_MySQL死鎖分析

熟悉或者了解數據庫的朋友都知道鎖的概念,這里不做過多的解析!鎖的種類有很多,不同數據庫的鎖管理方式也不同。這里主要談下MySQL innodb引擎下的死鎖。

死鎖通俗的來講就是2個事務相互請求對方持有的鎖,這樣就會造成2個事務相互等待對方釋放的鎖資源,于是這就是死鎖。事務A事務B

begin;

select * from t where a = 1 for update;begin;

select * from t where a = 2 for update;

select * from t where a = 2 for update;

#等待

select * from t where a = 1 for update;

#ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

首先INNODB引擎不會回滾大多數的異常,但死鎖除外。再發現死鎖后,Innodb會立即回滾其中一個事務(這里回滾依據,會設計到權重問題)。例子中事務B被回滾!這是最常見的一種死鎖例子。

MySQL還有另外一種死鎖情況:當前事務持有待插入記錄的下一個記錄的X鎖(排他鎖),但此時等待的隊列中存在一個S鎖的請求,則可能會發生死鎖。首先創建一個測試用的表,并插入數據:

create table test( a int primary key) engine=innodb;

insert into test values (1),(2),(4),(5);時間事務A事務B

1begin;

2begin;

3select * from test where

a = 4 for update;

4select * from test where

a<=4 lock in share mode;

#等待

5insert into test values (3)

ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

6#事務獲得鎖,正常運行

事務A中已經對記錄4持有了X鎖,但會話A插入記錄3的時候會導致死鎖發生。這個問題產生是由于事務B中請求記錄4的S鎖而發生等待,但之前請求鎖對于主鍵記錄1、2都已經成功,若再時間5能插入記錄,那么事務B在獲取記錄4持有的S鎖后,還需要向后獲得記錄3的記錄,這顯得不合理。于是INNODB引擎在這里主動選擇死鎖。

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

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

相關文章

在Akka中實現主從/網格計算模式

主從模式是容錯和并行計算的主要示例。 模式背后的想法是將工作劃分為相同的子任務&#xff0c;然后將其委派給從屬。 這些從節點或實例將處理工作任務&#xff0c;并將結果發送回主節點。 然后主節點將編譯從所有從節點接收到的結果。關鍵是從節點僅知道如何處理任務&#xff…

java學習筆記總略

二、正文&#xff08;一&#xff09;Java1.接口和抽象類的區別①抽象類里可以有構造方法&#xff0c;而接口內不能有構造方法。②抽象類中可以有普通成員變量&#xff0c;而接口中不能有普通成員變量。③抽象類中可以包含非抽象的普通方法&#xff0c;而接口中所有的方法必須是…

react實現路由跳轉_react實現hash路由

眾所周知&#xff0c;目前單頁面使用的路由有兩種實現方式&#xff1a;hash 模式history 模式hash 模式路由原理&#xff1a;我們先來看hash模式&#xff0c;頁面首次加載時需要在load事件中解析初始的URL&#xff0c;從而展示進入的頁面。當 # 后面的哈希值發生變化時&#xf…

Java中的Google協議緩沖區

總覽 協議緩沖區是一種用于結構化數據的開源編碼機制。 它是由Google開發的&#xff0c;旨在實現語言/平臺中立且可擴展。 在本文中&#xff0c;我的目的是介紹Java平臺上下文中協議緩沖區的基本用法。 Protobuff比XML更快&#xff0c;更簡單&#xff0c;并且比JSON更緊湊。 當…

匈牙利哦模板 二分匹配 完全匹配問題

匈牙利算法的核心思想就是 騰空間, 有條件 創造,沒條件也要創造! bool find(int x){int i,j;for (j1;j<m;j){ //掃描每個被匹配的人 if (line[x][j]true && used[j]false) //如果有關系并且還沒有標記過(這里標記的意思是這次查找曾試圖改變過的歸屬問題&a…

ThinkPHP 中驗證碼的看不清切換

<!--HTML頁面--> <!DOCTYPE html><html><head> <title></title></head><body><script type"text/javascript" src"__PUBLIC__/js/jquery-1.8.2.min.js"></script><form action"{:U(H…

mysql從表截取信息_mysql中循環截取用戶信息并插入到目標表對應的字段中

操作環境&#xff1a;有表game_list&#xff0c;字段&#xff1a;uid&#xff0c;score1&#xff0c;score2&#xff0c;seat_id&#xff0c;last_update&#xff1b;傳入參數為i_player_detail &#xff0c;傳入的值為多個用戶的id、之前分數、之后分數、座位號&#xff0c;每…

Java中的數組,列表,集合,映射,元組,記錄文字

有時&#xff0c;當我對JavaScript的強大功能和表現力感到興奮時&#xff0c;我發現自己錯過了Java世界中的一兩個功能。 除了lambda表達式/閉包或任何您想稱為“匿名函數”的東西之外&#xff0c;它還對數組&#xff0c;數組&#xff0c;列表&#xff0c;集合&#xff0c;映射…

mysql鎖表問題的解決方法_MYSQL鎖表問題的解決方法

本文實例講述了MYSQL鎖表問題的解決方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;很多時候&#xff01;一不小心就鎖表&#xff01;這里講解決鎖表終極方法&#xff01;案例一mysql>show processlist;參看sql語句一般少的話mysql>kill thread_id;就可以解…

linux——(1)初識linux

linux有窗口管理員環境和純文本界面環境&#xff0c;同時linux默認提供6個Terminal來讓用戶登錄。crtlaltF1-6可自由切換。其中如果窗口管理員環境處于運行狀態&#xff0c;那么可以按crtlaltF7直接切過去。 常用命令&#xff1a; cd [dir] #進入dir目錄下 ls #列出當前目錄下的…

4.26學習成果

哇&#xff0c;今天終于開始接觸Web了&#xff0c;感覺有點小興奮&#xff0c;這幾天看來那個視頻感覺挺有趣的&#xff0c;挺奇妙的。看到人家敲代碼&#xff0c;感覺好厲害。但是感覺不懂&#xff0c;所以&#xff0c;要努力學習了。 今天的學習成果&#xff1a; 網頁由什么組…

將Glassfish 3連接到外部ActiveMQ 5代理

介紹 在ONVZ&#xff0c;我們將Glassfish 3用作開發和生產應用服務器&#xff0c;我們對其性能和穩定性以及周圍的廣大社區感到非常滿意。 我很少遇到在stackoverflow或java.net上沒有匹配解決方案的問題。 作為我們開源策略的一部分&#xff0c;我們還運行了一個定制的ActiveM…

esp8266 lcd 天氣_ESP8266 顯示實時天氣信息

代碼文件getdata.h#include #include #include #include #include #include #include #define DEBUG 1#define MAX_CONTENT_SIZE 2000const char* ssid "weather";const char* password "mymymymy";WiFiClient client;HTTPClient http;char response[MAX…

【VS開發】visual studio 2015的NuGet Manager解決方案管理功能

NuGet的官方說明是&#xff1a;NuGet是一款Visual Studio的擴展&#xff0c;它可以簡單的安裝、升級開源庫和工具。 官網地址&#xff1a;http://www.nuget.org/ 官網最醒目的位置就是下載鏈接&#xff0c;安裝完成后我們來快速體驗一把。 手上有個小項目需要使用到json格式&am…

五. 面向對象高級特性4. 接口的概念和使用

在抽象類中&#xff0c;可以包含一個或多個抽象方法&#xff1b;但在接口(interface)中&#xff0c;所有的方法必須都是抽象的&#xff0c;不能有方法體&#xff0c;它比抽象類更加“抽象”。接口使用 interface 關鍵字來聲明&#xff0c;可以看做是一種特殊的抽象類&#xff0…

智能配料

我們都有多少次聽說“分批處理”會增加延遲&#xff1f; 作為對低延遲系統充滿熱情的人&#xff0c;這讓我感到驚訝。 以我的經驗&#xff0c;正確完成批處理不僅可以提高吞吐量&#xff0c;還可以減少平均延遲并保持一致。 那么&#xff0c;批處理如何神奇地減少延遲呢&#x…

mysql從myisam_將MySQL從MyISAM轉換成InnoDB錯誤和解決辦法

原來自己用的是為了裝的&#xff0c; 所以在設置database usage(如下圖1)的時候按照discuz官方的建議&#xff0c;選的都是Non-Transactional Database Only(只支持MyISAM數據引擎的非事務數據庫)&#xff0c;用MyISAM數據庫&#xff0c;還沒涉及到需要InnoDB&#xff0c;因此打…

相似性度量中用到的一些距離函數

本文目錄 1. 歐氏距離 2. 曼哈頓距離 3. 切比雪夫距離 4. 閔可夫斯基距離 5. 標準化歐氏距離 6. 馬氏距離 7. 漢明距離 8. 杰卡德距離 & 杰卡德相似系數 9. 相關系數 & 相關距離 10. 信息熵 1. 歐氏距離(Euclidean Distance) 歐氏距離是最易于理解的一種距離計算方法&a…

Spring 3.1配置文件和Tomcat配置

Spring 3.1引入了非常有用的功能&#xff0c;稱為配置文件 。 因此&#xff0c;它易于構建&#xff0c;可以在所有環境&#xff08;開發&#xff0c;測試&#xff0c;生產等&#xff09;中部署的軟件包。 通過定義系統屬性spring.profiles.active&#xff0c; Spring允許我們使…

計算1~n之間所有奇數之和_所有奇數長度子數組的和

所有奇數長度子數組的和題目&#xff1a;給你一個正整數數組 arr &#xff0c;請你計算所有可能的奇數長度子數組的和。子數組 定義為原數組中的一個連續子序列。請你返回 arr 中 所有奇數長度子數組的和 。示例 1&#xff1a;輸入&#xff1a;arr [1,4,2,5,3]輸出&#xff1a…