2017-03-17 95 views
0

刪除時,我有一個表有以下的列MySQL的死鎖某些列

document_uuid, driver_uuid, vehicle_uuid, etc 

document_uuid是主鍵,並始終是唯一的。
driver_uuid是必填字段,並不總是唯一的。
vehicle_uuid是一個可選字段。

我們不斷刪除和添加行到這個表。刪除是由driver_uuid或document_uuid。

今天我添加了一些代碼,以偶爾刪除vehicle_uuid以及部署開始導致mysql死鎖。

僵局異常不會表現出過多的信息:

'Deadlock found when trying to get lock; try restarting transaction') [SQL: u'DELETE FROM documents_rich_context WHERE vehicle_uuid = %s'] 

回答

0

的問題是缺乏對vehicle_uuid領域的指標。

如果沒有索引,數據庫引擎必須獲取更多行來識別要刪除的行,從而導致死鎖的可能性更高。

添加索引解決了問題。