2012-06-08 158 views
-3

執行大量設備的事務時,發生死鎖錯誤。我正在使用MySQL。巨大數量的設備將同時訪問數據庫。這會導致錯誤代碼1205.MYSQL中的死鎖

任何建議...?

+0

老兄,如果你有併發......那你就有死鎖的危險!你如何減輕風險?這是一個BIIIIIIIIG話題 - 沒有簡單的答案。建議:分析您的應用程序的行爲,並嘗試確定大部分死鎖發生的位置。學習「解釋計劃」。檢查你的索引。知道你的疑問。 – paulsm4

+0

-1我們沒有魔法球,如果您希望有任何幫助,請發佈您的代碼。 –

回答

1

the documentation

消息:鎖等待超時超標; 嘗試重新啓動交易

這說明了一切。另一個問題是如何找出造成超時的原因 - 但這幾乎無法用給定的信息來說明。你將不得不提供一些數字(多少是「一個巨大的數字」;在你的事務中執行多少(和哪些)語句)以及涉及到的有關表結構的一些信息。

如果沒有辦法再加快您的交易,您可以編輯您的my.cnf和增加超時(innodb_lock_wait_timeout)或者,如果你想JST增加超時,該項交易開始之前打電話SET innodb_lock_wait_timeout = 120;