日期:2014-05-20  浏览次数:20767 次

[求助]最近小弟在开发一个程序但出现数据库死锁问题
一个后台程序有20多种算法 从其它表中取得数据经业务处理后 插入同一个表中
因为怕顺序写下来执行速度太慢 所以每个算法都是一个线程 到时候每天定时开启所有的算法
本机运行没问题 但在服务器上跑就死锁
不知道应该如何处理
希望处理过这方面问题的朋友介绍下经验!谢谢!


------解决方案--------------------
那可以不要写到一个事务里。
不然,一个线程在操作这个表,这个表就被上锁了,其它表又不能操作。然后锁表的那个线程可能又要等其它线程的结果。这样就死锁了。

或者优化下算法。一个线程的结果先插入进去,然后放弃锁。给其它线程用。反正就是线程间调度好。
------解决方案--------------------
优化算法吧,对表的存储操作建议弄成互斥的,或者考虑一下哪个地方容易出现死锁,找到问题就好解决了。本机可能不支持多线程所以没发现问题,服务器一般都支持多线程所以可能死锁
------解决方案--------------------
从数据库锁的机制上下手。。。