在删除和运行更新统计信息时遇到死锁



我正在运行一个从表中删除数据的存储过程,该过程如下:

SET rowcount 10000
WHILE ( @rows_deleted > 0 )
BEGIN
BEGIN TRAN
DELETE TABLE1 WHERE status = '1'
SELECT @rows_deleted = @@rowcount
COMMIT TRAN
END

当这个过程运行时,更新统计也在同一表上运行。表的锁方案是所有页。我想知道如果锁定是所有的页面,它怎么可能遇到死锁?这张表上没有其他东西在运行。

我使用的是Sybase 12.5 ASE

发现更新统计信息确实正在创建死锁。它拿走了桌子上的一把共享锁。由于表具有所有页面的锁定方案,因此删除必须等待它完成。但是,Sybase没有长时间阻塞删除查询,而是选择将其作为受害者终止。

相关内容

最新更新