クエリ調整

特定のクエリが Microsoft Dataverse のデータを格納するデータベースに不均衡な負荷をかけた場合、データベースのリソースが不足し、すべてのデータ操作のパフォーマンスに悪影響を及ぼす可能性があります。 これが起こると、Dataverse はその特定のクエリの調整を開始し、他のすべてのシナリオが正常に実行できるようになります。

クエリ調整サービス保護の API 制限 と異なる点は、クエリ調整はパフォーマンス低下の原因となる特定のクエリを対象とし、それ以外のトラフィックには影響を与えないという点です。 調整されたクエリが非インタラクティブなアプリケーションから発信されている場合、調整はエンドユーザーには気づかれない可能性があります。 クエリがインタラクティブなアプリケーションから発信される場合、その特定のシナリオを実行するユーザーに影響します。

クエリ調整の動作

調整には、次の 2 つの方法があります。

  • クエリを実行する前に遅延を導入し、クエリを利用するシナリオを遅くする

  • クエリを実行しようとすると、何割かの確率で専用のエラーが発生します。

エラー コード 16 進コード メッセージ
-2147187388 0x80048544 このクエリはクエリ調整と競合するため実行できません。 クエリ調整 を参照してください

一般的な要因

クエリの調整が必要な状況のほとんどは、次の 2 つの大きなカテゴリのいずれかに分類されます。

  • グリッドで使用される保存済クエリや、プラグインで実行されるクエリなど、一般的なインタラクティブ シナリオにおけるクエリは、非効率的で、実行のたびに多くのデータベース リソースを必要とする

  • 大量のデータを Dataverse に出し入れするデータ統合などの自動化された操作では、クエリが非常に高いレートで実行されるため、1 回の実行量は少なくても、全体では多くのデータベース リソースが消費される

クエリ調整を回避する方法

クエリ調整は、クエリや実行されるシナリオによって異なりますが、いくつかの共通のガイドラインがあります。

  • インタラクティブなアプリケーションで一般的に使用される、低速で低頻度のクエリについては、クエリ構造を変更して効率化する必要がある

  • 非インタラクティブ アプリケーションの場合、データベースの負荷を軽減する一般的な方法は次のとおりです。

    • ExecuteMultiple (または他のバッチ処理メカニズム) が使用されている場合、バッチ サイズを小さくすることができる

    • アプリケーションがコンカレンシーを使用する場合は、スレッド数を減らすことができる

    • バッチ処理もコンカレンシーも使用しない場合、要求間の遅延を導入して要求レートを下げることができる