请教一个关于deadlock 死锁的问题
由于某些原因,没有使用并发,而是通过mysql数据库的表来代替队列。
具体语句是
先执行sql = 'SELECT * FROM resource_trading_center_yeji where is_deleted is null and project_source = "'+center_name+'" for update'
后执行sql = 'update resource_trading_center_yeji set is_deleted=1 where url=%s;'
中间没有commit
锁的等待超时设置为了1秒
场景是:一堆实例遍历plugins,plugs有各自的center_name,遍历过程中可能重复
project_source和is_deleted都有索引,按理说只会添加行锁,即便执行'update resource_trading_center_yeji set is_deleted=1 where url=%s;'时添加了表锁(url没有索引),但多个session并没有交叉等待锁。
不清楚为什么死锁,照理说应该等锁超时才对。
谢谢解答