mysql 表死鎖


今天因為mysql導入數據,導致其中一張表死鎖 下面來說說怎么解決死鎖問題

1.先說明一下導致mysql 死鎖的四個條件

互斥條件:就是一個資源只能有一個進程占有,不可以被兩個或者多個進程占有

不可搶占條件:進程已經獲得的資源在未使用完之前,不可以被搶占,只能在使用完之后自己釋放

占有申請條件:進程自己已經至少保持一個資源,又請求其他資源,但是這個資源被其他進程占有,而且又不釋放自己已經占有的資源

循環等待條件:發生死鎖時,必定會形成一個進程——資源的環路。進程集合{p1,p2,p3}中,p1請求p2占有的資源,p2請求p3占有的資源,p3請求p1占有的資源

解決死鎖的方案

第一種:

1.查詢是否鎖表

show OPEN TABLES where In_use > 0;

2.查詢進程(如果您有SUPER權限,您可以看到所有線程。否則,您只能看到您自己的線程)

show processlist

3.殺死進程id(就是上面命令的id列)

kill id

第二種:

1.查看下在鎖的事務 

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

2.殺死進程id(就是上面命令的trx_mysql_thread_id列)

kill 線程ID


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM