使用rowcount删除查询时陷入死锁

时间:2011-11-29 09:52:51

标签: sybase-ase rowcount

Set rowcount 50000
declare @i int 
select @i = 1 
 WHILE ( @i > 0 )
    BEGIN
    DELETE table1
    FROM table1 (index index1)
    WHERE
    HIST_Timestamp < '2011/11/26'
    select @i = @@rowcount
    END

查询有时遇到死锁情况并终止..无法弄清楚出了什么问题..请帮助我!

1 个答案:

答案 0 :(得分:1)

当事务A锁定记录然后必须等待事务B解锁记录时发生死锁,而事务B正在等待事务A已经锁定的记录。

如果您真的想知道死锁发生的原因,可以使用以下命令执行此操作: sp_configure "print deadlock information", 1

为查询创建有用的index允许delete语句使用页锁或行锁,从而改善对表的并发访问。如果无法为删除事务创建index,则可以在游标中执行操作,使用频繁的提交事务语句来减少页锁的数量。