校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > mysql報錯:Deadlock found when trying to get lock; try restarting transaction的解決方法

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

熱門標簽:沈陽電銷外呼系統原理是什么 上海智能外呼系統代理商 ps制作地圖標注gif 成都優派外呼系統 電子地圖標注電話 寧波企業外呼系統收費 聊城智能外呼系統運營商 地圖標注人員兼職 扎樣申請400電話

發現問題

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

[2017-02-10 13:12:06.678] [INFO] 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 transaction

InnoDB 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 againbr>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:
Change

DELETE FROM onlineusers WHERE datetime = now() - INTERVAL 900 SECOND
To

DELETE 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

總結

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

您可能感興趣的文章:
  • c#中SqlTransaction——事務詳解
  • mysql Non-Transactional Database Only(只支持MyISAM)
  • 淺談Transact-SQL
  • MySQL數據庫事務隔離級別介紹(Transaction Isolation Level)
  • Transact_SQL 小手冊
  • Sql Server數據庫常用Transact-SQL腳本(推薦)

標簽:朔州 三明 林芝 AXB 汕頭 咸寧 宿州 內江

巨人網絡通訊聲明:本文標題《mysql報錯:Deadlock found when trying to get lock; try restarting transaction的解決方法》,本文關鍵詞  mysql,報錯,Deadlock,found,when,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql報錯:Deadlock found when trying to get lock; try restarting transaction的解決方法》相關的同類信息!
  • 本頁收集關于mysql報錯:Deadlock found when trying to get lock; try restarting transaction的解決方法的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美综合欧美视频| 狠狠色丁香婷婷综合久久片| 日韩一区二区三区免费观看| 91亚洲精品乱码久久久久久蜜桃| 成人免费看黄yyy456| 懂色av一区二区三区免费观看| 久久国产综合精品| 久久精品国产亚洲高清剧情介绍| 蜜臀精品一区二区三区在线观看| 日日欢夜夜爽一区| 毛片av一区二区| 国产精品 欧美精品| 成人白浆超碰人人人人| 日本道精品一区二区三区| 欧美视频日韩视频在线观看| 91精品国产综合久久蜜臀| 日韩欧美一区中文| 久久久久国产精品麻豆ai换脸| 亚洲国产精品ⅴa在线观看| 亚洲精品免费视频| 天天av天天翘天天综合网色鬼国产 | 欧美精品一区视频| 日本一区二区综合亚洲| 一区二区三区美女| 美女高潮久久久| 成人三级在线视频| 欧美四级电影网| 久久一夜天堂av一区二区三区| 欧美激情在线一区二区| 亚洲国产成人tv| 国产中文一区二区三区| 色婷婷国产精品| 日韩精品一区二区三区中文不卡| 国产欧美精品区一区二区三区| 亚洲三级电影全部在线观看高清| 日韩成人精品视频| 成人激情开心网| 日韩欧美亚洲另类制服综合在线| 国产精品久久毛片a| 日韩av在线播放中文字幕| 99久久综合狠狠综合久久| 91精品国产综合久久福利 | 欧美主播一区二区三区| 久久综合给合久久狠狠狠97色69| 伊人夜夜躁av伊人久久| 国产一区二区在线看| 欧美天天综合网| 国产精品视频看| 日韩激情一区二区| 91官网在线免费观看| 久久综合久久综合久久综合| 天天操天天综合网| 亚洲精品一区二区三区精华液| 91精品免费在线| 国产精品麻豆一区二区| 欧美精品一卡两卡| 欧美国产精品中文字幕| 日韩和的一区二区| 成人爱爱电影网址| 欧美变态tickling挠脚心| 亚洲激情校园春色| 成人av在线观| 国产精品欧美一级免费| 热久久国产精品| 色婷婷综合久久久久中文 | 亚洲chinese男男1069| 99热精品一区二区| 成人欧美一区二区三区视频网页 | 狠狠色狠狠色综合日日91app| 欧美色窝79yyyycom| 亚洲欧美一区二区不卡| 99久久精品免费精品国产| 国产精品国产成人国产三级 | 欧美夫妻性生活| 天使萌一区二区三区免费观看| 色婷婷久久综合| 亚洲夂夂婷婷色拍ww47| 91成人国产精品| 午夜伊人狠狠久久| 制服丝袜中文字幕亚洲| 免费观看在线色综合| 日韩一区二区三区在线观看| 久草这里只有精品视频| 久久久一区二区| 成人免费福利片| 亚洲视频在线一区观看| 欧美在线三级电影| 日韩精彩视频在线观看| 精品国产三级a在线观看| 国产成人午夜精品影院观看视频| 国产视频一区二区三区在线观看| 成人国产精品免费网站| 亚洲制服丝袜av| 日韩亚洲欧美成人一区| 国产精品1024久久| 一二三区精品视频| 日韩亚洲电影在线| 成人久久视频在线观看| 亚洲电影在线播放| 日韩免费视频线观看| 成人一区在线观看| 午夜亚洲福利老司机| 欧美mv日韩mv国产网站| 99麻豆久久久国产精品免费优播| 香蕉av福利精品导航| 国产亚洲成av人在线观看导航| 成人h动漫精品一区二区| 午夜电影一区二区| 久久精品这里都是精品| 91激情五月电影| 激情六月婷婷综合| 一区二区三区中文在线观看| 4438成人网| 一本大道av一区二区在线播放| 日韩精品一二三| 专区另类欧美日韩| 精品日韩在线一区| 91极品美女在线| 成人午夜私人影院| 蜜臀a∨国产成人精品| **性色生活片久久毛片| 日韩欧美的一区二区| 91日韩在线专区| 国产一区二区伦理| 日韩高清电影一区| 亚洲乱码一区二区三区在线观看| 精品久久久久久亚洲综合网| 欧美三级日韩在线| 色先锋资源久久综合| 国产成a人无v码亚洲福利| 视频一区视频二区中文字幕| 亚洲精品国久久99热| 国产精品不卡在线| 久久久国产精品不卡| 91精品国产91综合久久蜜臀| 色婷婷综合久久久| 成人免费黄色在线| 国产成人av一区二区| 久久精品国产999大香线蕉| 亚洲地区一二三色| 亚洲精品亚洲人成人网在线播放| 亚洲国产成人午夜在线一区| 精品日韩成人av| 欧美电视剧免费全集观看| 欧美一区二区女人| 欧美一区二区三区在线| 欧美日韩一级黄| 欧美日韩亚洲另类| 欧美日韩一区二区三区高清| 欧美三级电影在线看| 欧美日韩卡一卡二| 欧美精品久久一区二区三区| 欧美喷潮久久久xxxxx| 欧美日韩www| 欧美一级黄色片| 日韩视频免费观看高清完整版 | 亚洲女人****多毛耸耸8| 亚洲色图色小说| 一区二区三区在线观看动漫| 一区二区三区在线视频观看58| 亚洲一二三四区| 午夜伦理一区二区| 图片区小说区区亚洲影院| 蜜桃传媒麻豆第一区在线观看| 免费成人深夜小野草| 国产麻豆精品视频| www.99精品| 在线看国产一区二区| 91精品国产色综合久久ai换脸| 日韩视频一区二区三区| 久久久久久久久久久久久夜| 国产精品久久久久影视| 亚洲五码中文字幕| 久久99精品国产.久久久久久 | 亚洲色图另类专区| 亚洲成人自拍网| 国产精品白丝av| 欧美专区日韩专区| 精品久久国产97色综合| 日本一区免费视频| 亚洲成在人线在线播放| 国产成人av电影在线观看| 色婷婷久久久亚洲一区二区三区 | 在线免费亚洲电影| 精品久久久三级丝袜| 亚洲欧美国产三级| 精品亚洲国产成人av制服丝袜| 国产成人午夜片在线观看高清观看| 99精品国产热久久91蜜凸| 制服丝袜日韩国产| 欧美国产综合一区二区| 五月婷婷久久丁香| 成人ar影院免费观看视频| 欧美一区二区三区色| 国产精品高潮呻吟久久| 精品在线一区二区三区| 91国内精品野花午夜精品| 久久久久久夜精品精品免费| 五月天激情综合网| 91在线精品秘密一区二区|