SQL Azureデータベースには、1日に1回実行するような大規模なSELECT
ステートメントが含まれています。重いSELECT
ステートメントには、ロックのヒントが含まれていません。最近、製造中にいくつかの屋台が見られました。これがsys.dm_exec_requests
はその期間表示されていました...実行時間が最も長いクエリはSELECT
であり、PAGEIOLATCH_SH
待機タイプ。次は他のクエリでした-ほとんどの場合INSERT
ステートメントはPAGEIOLATCH_EX
待機タイプ。すべてがすぐに完了するのではなく、数十秒間実行されます。そのため、基本的にその重いSELECT
だけで他のクエリが中断されます。
どうすれば解決できますか?重いSELECT
の実行が遅くても問題ありませんが、他のクエリが中断されるべきではありません。
主なオプションは次のとおりです。
SELECT
クエリを調整して、使用するI/Oリソースを減らします。補足:この回答では [〜#〜] rcsi [〜#〜] やSIなどの分離レベルの使用については触れていません。それらはロックブロッキングに適用され、質問にはそれへの参照が含まれていません:PAGEIOLATCH_XX
待機は、物理I/Oでの待機に関連付けられています。
*この機能は、Azure SQLデータベースでは使用できない場合があります。