主頁 > 知識(shí)庫 > Mysql查看死鎖與解除死鎖的深入講解

Mysql查看死鎖與解除死鎖的深入講解

熱門標(biāo)簽:房產(chǎn)智能外呼系統(tǒng)品牌 常州電銷外呼系統(tǒng)一般多少錢 北京人工外呼系統(tǒng)價(jià)錢 福州呼叫中心外呼系統(tǒng)哪家好 天智外呼系統(tǒng) 沃克斯電梯外呼線路圖 400電話鄭州申請 地圖標(biāo)注被騙三百怎么辦 云南語音外呼系統(tǒng)平臺(tái)

前言

前段時(shí)間遇到了一個(gè)Mysql 死鎖相關(guān)的問題,整理一下。

問題描述:Mysql 的修改語句似乎都沒有生效,同時(shí)使用Mysql GUI 工具編輯字段的值時(shí)會(huì)彈出異常。

什么是死鎖

在解決Mysql 死鎖的問題之前,還是先來了解一下什么是死鎖。

死鎖是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進(jìn)下去.此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等的進(jìn)程稱為死鎖進(jìn)程。

死鎖的表現(xiàn)

死鎖的具體表現(xiàn)有兩種:

Mysql 增改語句無法正常生效 使用Mysql GUI 工具編輯字段的值時(shí),會(huì)出現(xiàn)異常。 如何避免死鎖

阻止死鎖的途徑就是避免滿足死鎖條件的情況發(fā)生,為此我們在開發(fā)的過程中需要遵循如下原則:

1.盡量避免并發(fā)的執(zhí)行涉及到修改數(shù)據(jù)的語句。

2.要求每一個(gè)事務(wù)一次就將所有要使用到的數(shù)據(jù)全部加鎖,否則就不允許執(zhí)行。

3.預(yù)先規(guī)定一個(gè)加鎖順序,所有的事務(wù)都必須按照這個(gè)順序?qū)?shù)據(jù)執(zhí)行封鎖。如不同的過程在事務(wù)內(nèi)部對對象的更新執(zhí)行順序應(yīng)盡量保證一致。

查看死鎖

Mysql 查詢是否存在鎖表有多種方式,這里只介紹一種最常用的。

1. 查看正在進(jìn)行中的事務(wù)

SELECT * FROM information_schema.INNODB_TRX

可以看到 進(jìn)程id為3175 的事務(wù)在鎖住了,而另一個(gè)id為3173的事務(wù)正在執(zhí)行,但是沒有提交事務(wù)。

2. 查看正在鎖的事務(wù)

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

3. 查看等待鎖的事務(wù)

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

4. 查詢是否鎖表

SHOW OPEN TABLES where In_use > 0;

在發(fā)生死鎖時(shí),這幾種方式都可以查詢到和當(dāng)前死鎖相關(guān)的信息。

5. 查看最近死鎖的日志

show engine innodb status

解除死鎖

如果需要解除死鎖,有一種最簡單粗暴的方式,那就是找到進(jìn)程id之后,直接干掉。

查看當(dāng)前正在進(jìn)行中的進(jìn)程

show processlist

// 也可以使用
SELECT * FROM information_schema.INNODB_TRX;

這兩個(gè)命令找出來的進(jìn)程id 是同一個(gè)。

殺掉進(jìn)程對應(yīng)的進(jìn)程 id

kill id

驗(yàn)證(kill后再看是否還有鎖)

SHOW OPEN TABLES where In_use > 0;

參考鏈接

Mysql 查看表和解鎖表

Mysql 死鎖是什么?

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

您可能感興趣的文章:
  • MySQL死鎖檢查處理的正常方法
  • MySQL死鎖的產(chǎn)生原因以及解決方案
  • 關(guān)于MySQL死鎖問題的深入分析
  • MySQL死鎖套路之唯一索引下批量插入順序不一致
  • 一個(gè)mysql死鎖場景實(shí)例分析
  • 一次神奇的MySQL死鎖排查記錄
  • MySQL數(shù)據(jù)庫之Purge死鎖問題解析
  • 詳解通過SQL進(jìn)行分布式死鎖的檢測與消除

標(biāo)簽:沈陽 拉薩 黔東 移動(dòng) 沈陽 徐州 鹽城 珠海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql查看死鎖與解除死鎖的深入講解》,本文關(guān)鍵詞  Mysql,查看,死鎖,與,解除,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql查看死鎖與解除死鎖的深入講解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Mysql查看死鎖與解除死鎖的深入講解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章