一、show ENGINE INNODB status
成都創(chuàng)新互聯(lián)公司2013年成立,先為秀嶼等服務(wù)建站,秀嶼等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為秀嶼企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
查看死鎖位置,分析。
二、
首先解決死鎖可以從死鎖發(fā)生的條件入手,最容易解決的就是更改獲取資源的順序;
其次是避免長事務(wù),讓事務(wù)執(zhí)行的時間盡可能少,讓事務(wù)的覆蓋范圍盡可能小,長事務(wù)會導(dǎo)致并發(fā)度降低,且會有更多的SQL查 詢延遲;
給整個方法加事務(wù)是否是必須的?可以不加事務(wù)的盡量不加。
1. 使用終端或命令提示符登錄到MySQL,輸入命令:mysql -h xxxx.xxx.xxx -P 3306 -u username -p?
解釋:xxxx.xxx.xxx是數(shù)據(jù)庫IP地址,username是數(shù)據(jù)庫用戶名,輸入命令后,會讓你輸入username對應(yīng)的密碼,就可以登錄了
2. 如何查看MySQL數(shù)據(jù)庫的死鎖信息?
在MySQL客戶端下輸入命令:?
show engine innodb status \G;?
3. 如何定位MySQL數(shù)據(jù)庫的死鎖信息?
在打印出來的信息中找到“LATEST DETECTED DEADLOCK”一節(jié)內(nèi)容,看圖中紅線?
4. 如何分析日志,定位死鎖原因?
看3里面的圖,紫色劃線部分?
分析:?
事務(wù)1,等待?
RECORD LOCKS space id 553 page no 376 n bits 368 index `index_user_id` of table `tbj`.`score_user`,這個位置的X鎖?
事務(wù)2,持有?
RECORD LOCKS space id 553 page no 376 n bits 368 index `index_user_id` of table `tbj`.`score_user`這個地方的S鎖?
事務(wù)2,等待這個地方的X鎖?
理論上這個事務(wù)2是可以提交的不會,死鎖,但是這個事務(wù)日志只打印最后一部分死鎖,信息,這里面隱含的條件是,事務(wù)1也持有?
RECORD LOCKS space id 553 page no 376 n bits 368 index `index_user_id` of table `tbj`.`score_user`這個地方的S鎖,這樣,事務(wù)2不能加X鎖,同時事務(wù)1也不能加X鎖,產(chǎn)生死鎖。
1.查看表被鎖狀態(tài)
2.查看造成死鎖的sql語句
3.查詢進程
4.解鎖(刪除進程)
5.查看正在鎖的事物? (8.0以下版本)
6.查看等待鎖的事物?(8.0以下版本)