请教一个关于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并没有交叉等待锁。
不清楚为什么死锁,照理说应该等锁超时才对。
谢谢解答
具体语句是
先执行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并没有交叉等待锁。
不清楚为什么死锁,照理说应该等锁超时才对。
谢谢解答
...全文
相关推荐
通过SQL Server Profiler来监视分析死锁
NULL 博文链接:https://beijingwo2008.iteye.com/blog/1851542
MySQL DeadLock故障排查全过程记录
主要给大家介绍了关于MySQL DeadLock故障排查的全过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
DB2解决表死锁
NULL 博文链接:https://lxneliu.iteye.com/blog/1610166
Deadlock-Detector:一个AC程序,它使用深度优先搜索算法遍历从过程资源分配邻接表创建的图来检测计算机系统中的潜在死锁
死锁检测器 一个AC程序,用于使用深度优先搜索算法遍历从过程资源分配邻接表创建的图来检测计算机系统中的潜在死锁。
InnoDB数据库死锁问题处理
场景描述 在update表的时候出现DeadlockLoserDataAccessException异常 (Deadlock found when trying to get lock; try restarting transaction…)。 问题分析 这个异常并不会影响用户使用,因为数据库遇到死锁会自动回滚并重试。用户的感觉就是操作稍有卡顿。但是监控老是报异常,所以需要解决一下。 解决方法 在应用程序中update的地方使用try-catch。 我自己封装了一个函数,如下。 /** * 2016-03-15 * linxuan * handle deadlock wh


