我有一个包含以下列的表
|name weight product |
|custA .25 trash |
|custA .75 recycling|
|custB .10 trash |
|custB .90 recycling|
document_uuid, driver_uuid, vehicle_uuid, etc
是主键,并且始终是唯一的
document_uuid
是必填字段,并不总是唯一的
driver_uuid
是一个可选字段。
我们不断删除并向此表添加行。删除是通过driver_uuid或document_uuid。
今天我添加了一些代码,偶尔也会被vehicle_uuid删除,并且部署开始导致mysql死锁。
死锁异常没有显示太多信息:
vehicle_uuid
答案 0 :(得分:0)
问题是vehicle_uuid字段缺少索引。
如果没有索引,db引擎必须抓取更多行来识别要删除的行,从而导致更高的死锁机会。
添加索引解决了这个问题。