sql提示死锁

来源:百度知道 编辑:UC知道 时间:2024/06/15 04:15:54
在查询分析器中执行存储,正常获得信息。但是通过程序执行提示事务(进程 ID 410)与另一个进程已被死锁在 lock | communication buffer 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务。

我也曾遇到过这个问题,记得当时我写了一个复杂的存储过程,里面处理了很多个数据表的数据,且在存储过程中使用了事务。
该存储过程在查询分析器中执行需要20秒左右的时间。但到程序中去执行,所需要的时间就要长很多了。而且由于采用事务,容易产生死锁。问题与你的一样。
后来我采取了以下措施,问题便得到改状况,至目前为止没有再出现过此问题:
将你的存储过程进行优化,将需要的数据取到存储中,使用临时表或变量保存,而对于插入数据、删除数据、修改数据、等需要事务的地方,则开启事务,在此之前的处理中,不要使用事务。
另外就是尽量减少对大数据量表的操作次数,优化各句话,使其执行时间快,效率优。尽量降低存储过程的运行时间。减少数据表在事务中锁定的时间。

祝你成功

kill process
少用for update语句