【问题标题】:Getting into deadlock while using rowcount delete query使用行计数删除查询时陷入死锁
【发布时间】:2011-11-29 09:52:51
【问题描述】:
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

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

【问题讨论】:

    标签: sap-ase rowcount


    【解决方案1】:

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

    如果你真的想知道为什么会发生死锁,你可以使用这个命令: sp_configure "print deadlock information", 1

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多