2016-05-31 75 views
-1

有一個大的更新:Innodb的,更新幾千條記錄導致鎖定超時

UPDATE myBigTable SET x=0; 

這不能做,我得到SQL錯誤(1205),鎖等待超時超標。我試圖關閉自動提交,仍然沒有結果。如何更新呢?

編輯:我試圖禁用自動提交,仍然沒有喜悅

+3

你有沒有考慮過分塊?就像'UPDATE myBigTable SET x = 0 WHERE x!= 0 LIMIT 10000;'循環直到完成? – ceejayoz

回答

1

你可以試着增加這樣的鎖定時限:

mysql> set innodb_lock_wait_timeout=100 

其中100是秒。

或者你可以嘗試要殺死這實際上是鎖定你的過程是怎樣的過程:

mysql> kill processId; 
+0

我試過了,但它永遠不會結束 –

+0

我試圖禁用自動提交,仍然沒有快樂 –

+0

只是增加鎖定超時不是一個解決方案。執行更新的雙向OP不應該實時進行。 – Rahul

0

有一個大的更新:

你真的確定要更新所有你的表格記錄?你目前的行爲看起來不正確。您應該考慮使用A where過濾條件並執行更新;像UPDATE myBigTable SET x=0 WHERE id = value;如果你真的想更新整個表記錄,那麼考慮批量使用它,而不是一次性使用它。