亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

mysql報錯:Deadlock found when trying to get lock; try restarting transaction的解決方法

2024-07-24 13:13:55
字體:
來源:轉載
供稿:網友

發現問題

最近在補以前數據的時候程序突然報如下錯誤:

[2017-02-10 13:12:06.678] [INFO] mysql/154562.html">mysqlLog - update tbl_playerdata_error: { [Error: ER_LOCK_DEADLOCK: Deadlock found when trying to get lock; try restarting transaction] code: 'ER_LOCK_DEADLOCK', errno: 1213, sqlState: '40001', index: 0 }

一看就是mysql出現了死鎖問題,其實上面跑的程序在測試服跑了好久都沒什么問題,為什么在正式服上會出現mysql的死鎖問題呢,第一反應是不是數據量太大(3百多萬條),可是也不可能啊,再說死鎖和這些有什么雞毛的關系,看來要好好解決下了。

問題分析

我的分析是:由于現在處理的是正式服的數據,而正式服還有許多用戶在操作,應該是在用戶查詢,或者是其他操作的時候,和我這邊的數據更新產生了死鎖(首先說明使用的是:InnoDB存儲引擎。由于用戶那邊的查詢或者其他操作鎖定了我需要的資源,而我這邊更新也鎖定了用戶操作的一部分資源,兩邊都等著對方釋放資源,從而導致死鎖)。

解決方法

知道錯誤code之后,先來查看mysql的說明,關于上面的 Error: 1213 SQLSTATE: 40001,參見:Server Error Codes and Messages

Message: Deadlock found when trying to get lock; try restarting transactionInnoDB reports this error when a transaction encounters a deadlock and is automatically rolled back so that your application can take corrective action. To recover from this error, run all the operations in this transaction again. A deadlock occurs when requests for locks arrive in inconsistent order between transactions. The transaction that was rolled back released all its locks, and the other transaction can now get all the locks it requested. Thus, when you re-run the transaction that was rolled back, it might have to wait for other transactions to complete, but typically the deadlock does not recur. If you encounter frequent deadlocks, make the sequence of locking operations (LOCK TABLES, SELECT ... FOR UPDATE, and so on) consistent between the different transactions or applications that experience the issue. See Section 14.8.5, “Deadlocks in InnoDB” for details.

上面有兩句:

To recover from this error, run all the operations in this transaction again<br><br>If you encounter frequent deadlocks, make the sequence of locking operations (<code class="literal">LOCK TABLES</code>, <code class="literal">SELECT ... FOR UPDATE</code>, and so on) <br>consistent between the different transactions or applications that experience the issue 

這兩句也就道出了處理死鎖的方法了,我就是在死鎖錯誤發生的時候,使用定時器再重新做一次更新操作,這樣就避免了上面出現的問題。

另外,參考了stack overflow上面一個回答:http://stackoverflow.com/questions/2332768/how-to-avoid-mysql-deadlock-found-when-trying-to-get-lock-try-restarting-trans

One easy trick that can help with most deadlocks is sorting the operations in a specific order.You get a deadlock when two transactions are trying to lock two locks at opposite orders, ie:connection 1: locks key(1), locks key(2);connection 2: locks key(2), locks key(1);If both run at the same time, connection 1 will lock key(1), connection 2 will lock key(2) and each connection will wait for the other to release the key -> deadlock.Now, if you changed your queries such that the connections would lock the keys at the same order, ie:connection 1: locks key(1), locks key(2);connection 2: locks key(1), locks key(2);it will be impossible to get a deadlock.So this is what I suggest:Make sure you have no other queries that lock access more than one key at a time except for the delete statement. if you do (and I suspect you do), order their WHERE in (k1,k2,..kn) in ascending order.Fix your delete statement to work in ascending order:ChangeDELETE FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECONDToDELETE FROM onlineusers WHERE id IN (SELECT id FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND order by id) u;Another thing to keep in mind is that mysql documentation suggest that in case of a deadlock the client should retry automatically. you can add this logic to your client code. (Say, 3 retries on this particular error before giving up).

參考:http://blog.sina.com.cn/s/blog_4acbd39c01014gsq.html

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美国产一区二区| 成人h视频在线| 午夜精品福利电影| 日韩成人在线视频观看| 欧美一级片久久久久久久| 欧美国产一区二区三区| 成人动漫网站在线观看| 亚洲激情在线视频| 日韩网站免费观看高清| 91久久久久久久久| 成人国产精品一区| 美女视频黄免费的亚洲男人天堂| 国产综合久久久久久| 日本午夜精品理论片a级appf发布| 久久久久久久一区二区三区| 77777亚洲午夜久久多人| 国产精品欧美一区二区| 国产精品91视频| 色久欧美在线视频观看| 国产亚洲美女久久| 国产精品自在线| 国产欧美精品在线| 国产精品专区第二| 国产精品久久久久久久一区探花| 色婷婷**av毛片一区| 国产欧美日韩中文字幕在线| 狠狠久久五月精品中文字幕| 91精品在线播放| 亚洲人成电影在线播放| 久久综合久久美利坚合众国| 91亚洲va在线va天堂va国| 久久男人av资源网站| 欧美黑人一级爽快片淫片高清| 色哟哟网站入口亚洲精品| 欧美一区二粉嫩精品国产一线天| 日韩激情在线视频| 久久久久久九九九| 国产精品电影一区| 欧美在线观看日本一区| 欧美日韩一区二区三区| 日韩电影在线观看中文字幕| 在线观看日韩视频| 国产欧美一区二区三区在线| 91精品国产综合久久香蕉922| 国产精品福利久久久| 国产一区二区黑人欧美xxxx| 亚洲精品影视在线观看| 在线观看国产精品淫| 狠狠躁18三区二区一区| 亚洲成人在线网| 日韩女优人人人人射在线视频| 国产69精品久久久久9999| 精品亚洲一区二区三区四区五区| 欧美激情影音先锋| 97久久精品在线| 伊人成人开心激情综合网| 欧美日韩亚洲天堂| 亚洲欧美国产精品久久久久久久| 日韩精品在线第一页| 亚洲成人精品av| 深夜成人在线观看| 欧美性猛交99久久久久99按摩| 欧美高清一级大片| 国产精品久久视频| 久久激情视频免费观看| 午夜精品美女自拍福到在线| 国产精品r级在线| 一本色道久久综合狠狠躁篇的优点| 亚洲r级在线观看| 国产精品99久久久久久白浆小说| 亚洲综合中文字幕在线观看| 精品久久久香蕉免费精品视频| 国产精品日韩在线观看| 亚洲久久久久久久久久久| 亚洲国产精品va在线观看黑人| 蜜臀久久99精品久久久久久宅男| 欧美成人三级视频网站| 91chinesevideo永久地址| 国产精品观看在线亚洲人成网| 九九热r在线视频精品| 国产成人福利网站| 国产在线播放不卡| 亚洲天堂网站在线观看视频| 日韩中文字幕在线精品| 国产亚洲人成网站在线观看| 久久精品视频网站| 国产精品久久精品| 夜夜躁日日躁狠狠久久88av| 久久中文字幕一区| 午夜精品久久久久久久久久久久| 亚洲免费精彩视频| 欧美激情小视频| 日韩av在线一区二区| 色综合男人天堂| 92看片淫黄大片欧美看国产片| 亚洲欧美一区二区三区在线| 亚洲人午夜色婷婷| 国产美女搞久久| 日韩av在线电影网| 日韩精品高清视频| 91成品人片a无限观看| 91精品啪aⅴ在线观看国产| …久久精品99久久香蕉国产| 色综合视频网站| 色综合91久久精品中文字幕| 亚洲男人av在线| 亚洲自拍偷拍区| 亚洲摸下面视频| 亚洲最大中文字幕| 97色在线播放视频| 日韩风俗一区 二区| 亚洲欧美国产日韩中文字幕| 久久理论片午夜琪琪电影网| 日本成人激情视频| 国产一区二区av| 日韩大陆欧美高清视频区| 中文字幕精品国产| 国产精品美女久久| 久久琪琪电影院| 91影视免费在线观看| 欧美精品www| 亚洲自拍小视频免费观看| 亚洲精品女av网站| 色综合天天综合网国产成人网| 日韩在线视频观看正片免费网站| 色综合久久久久久中文网| 久久国产精品免费视频| 国产手机视频精品| 97久久精品人人澡人人爽缅北| 91视频国产精品| 亚洲人成伊人成综合网久久久| 91社区国产高清| 亚洲精品美女免费| 欧美电影免费观看网站| 久久人人爽国产| 久久久久中文字幕| 亚洲老头老太hd| 亚洲毛片一区二区| 日韩在线视频二区| 国产女人精品视频| 日韩高清不卡av| 亚洲精品在线看| 韩国一区二区电影| 91久久国产精品91久久性色| www.久久草.com| 欧美国产激情18| 国产女同一区二区| 国产一区二区在线免费| 欧美日韩在线另类| 亚洲女人天堂视频| 国产区精品视频| 91亚洲精品一区二区| 91精品久久久久久久久青青| 欧美激情一级二级| 欧美整片在线观看| 日本国产一区二区三区| 日韩在线免费视频| 精品久久久久久中文字幕一区奶水| 亚洲**2019国产| 日韩精品免费一线在线观看| 国产成人精品日本亚洲专区61| 中文字幕日韩欧美精品在线观看| 欧美亚洲成人精品| 亚洲精品一区二三区不卡|