1
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

クエリがデッドロック状態に陥って終了することがあります.何が問題なのかわかりません..助けてください!

4

1 に答える 1

1

デッドロックは、トランザクション A がレコードをロックし、トランザクション B がレコードをロック解除するのを待たなければならないときに、トランザクション B がトランザクション A によって既にロックされているレコードを待機しているときに発生します。

デッドロックが発生している理由を本当に知りたい場合は、次のコマンドを使用して実行できます。 sp_configure "print deadlock information", 1

indexクエリに役立つものを作成すると、deleteステートメントでページまたは行のロックを使用できるようになり、テーブルへの同時アクセスが改善されます。削除トランザクション用のを作成indexできない場合は、頻繁にコミット トランザクション ステートメントを使用してカーソル内で操作を実行し、ページ ロックの数を減らすことができます。

于 2011-11-30T09:37:24.093 に答える