2017-07-13 7 views
0

大量のデータを持つAzure SQLデータベースでdelete文を実行する際に問題があります。削除クエリはAzure SQLデータベースで自動的にロールバックされます

私は、Azure SQLデータベースに約5百万レコードの販売テーブルを持っています。

このテーブルのすべてのデータを削除するためにストアドプロシージャを実行すると、しばらく実行されてから新しいIDで新しいプロセスが生成され、既存のプロセスがロールバックを開始し、新しいプロセスデータの削除を開始すると、新しいプロセスが再び別のプロセスを生成し、ロールバックを開始し、この同じ繰り返しが永遠に続きます。

最後に、数時間後にストアドプロシージャが失敗し、データは削除されません。

私は100DTUsのAzure SQLデータベースを持っています。

何が起こるか知っていますか?

+0

することができますこの部分について詳しく説明します。しばらく実行してから、新しいIDで新しいプロセスが生成され、既存のプロセスがロールバックを開始し、ロールバック後に新しいプロセスが開始されますデータを削除すると、新しいプロセスが再び別のプロセスを生成し、ロールバックを開始します。この同じ繰り返しが永遠に続けられます。具体的にはプロセスによって何を意味しますか?この間にエラーは発生しましたか?全体を削除すると切り捨てられません。テーブル? – TheGameiswar

答えて

1

スロットルが発生しているようです。 You can read more about that he re。 sys.event_logを調べて、スロットルイベントがあるかどうかを確認することもできます。最善の解決策は、何らかの形式のページングクエリを使用して、削除を小さなチャンクに分割することです。

1

削除プロセスがその層の制限に達している可能性があります。削除処理が実行されている間、次のクエリを実行することで確認できます。

SELECT 
    (COUNT(end_time) - SUM(CASE WHEN avg_cpu_percent > 80 THEN 1 ELSE 0 END) * 1.0)/COUNT(end_time) AS 'CPU Fit Percent' 
    ,(COUNT(end_time) - SUM(CASE WHEN avg_log_write_percent > 80 THEN 1 ELSE 0 END) * 1.0)/COUNT(end_time) AS 'Log Write Fit Percent' 
    ,(COUNT(end_time) - SUM(CASE WHEN avg_data_io_percent > 80 THEN 1 ELSE 0 END) * 1.0)/COUNT(end_time) AS 'Physical Data Read Fit Percent' 
FROM sys.dm_db_resource_stats 

99.9%<の--serviceレベル目標(SLO)は=

・ホープ、このことができますに、次の階層に進みます。..

よろしく、

アルベルトMorillo

関連する問題