次の方法で共有


実行時間の長い操作のベスト プラクティス

Azure Analysis Services では、 ノード は、サーバー リソースが実行されているホスト仮想マシンを表します。 実行時間の長いクエリ、更新操作、クエリ スケールアウト同期などの一部の操作は、サーバー リソースが別のノードに移動すると失敗する可能性があります。 このシナリオでの一般的なエラー メッセージには、次のようなものがあります。

  • "実行時間の長い XMLA 要求の検索中にエラーが発生しました。 The request might have been interrupted by service upgrade or server restart. (サービスのアップグレードまたはサーバーの再起動によって要求が中断された可能性があります。)"
  • ID '<guid>for model '<database>' のジョブは、サービスエラー(活動停止状態)のためキャンセルされました。"メッセージ:'更新がないため、更新要求をキャンセルしています。 This is an internal service issue. (これは内部サービスの問題です。) Please resubmit the job or file a ticket to get help if this issue happens repeatedly. (この問題が解決しない場合は、ジョブを再送信するか、サポートを受けるためのチケットを送信してください。)"

実行時間の長い操作が中断される理由は多数あります。 たとえば、次のような Azure の更新プログラムがあります。

  • オペレーティング システムの修正プログラム
  • セキュリティ更新プログラム
  • Azure Analysis Services サービスの更新プログラム
  • Service Fabric の更新プログラム。 Service Fabric は、Azure Analysis Services を含む多数の Microsoft クラウド サービスによって使用されるプラットフォーム コンポーネントです。

サービスで発生する更新以外にも、負荷分散によってノード間でサービスの自然な移動が発生します。 ノードの移動はクラウド サービスで想定されている動作です。 Azure Analysis Services はノードの移動の影響を最小限に抑えようとしますが、完全に排除することはできません。

ノードの移動に加えて、他の障害が発生する可能性があります。 たとえば、データ ソース データベース システムがオフラインであるか、ネットワーク接続が失われている可能性があります。 更新中にパーティションに 1,000 万行があり、900 万行目でエラーが発生した場合、障害が発生した時点で更新を再開する方法はありません。 サービスは最初から再度開始する必要があります。

REST API を更新する

サービスの中断は、データ更新などの実行時間の長い操作では困難な場合があります。 Azure Analysis Services には、サービスの中断による悪影響を軽減するために役立つ REST API が含まれています。 詳細については、 REST API を使用した非同期更新に関するページを参照してください。

REST API 以外にも、実行時間の長い更新操作中の潜在的な問題を最小限に抑えるために使用できるその他の方法があります。 目標は、最初から更新操作を再開する必要を回避し、代わりに段階的にコミットできる小さなバッチで更新を実行することです。

REST API ではこのような再起動が可能ですが、パーティションの作成と削除を完全に柔軟に行うことはできません。 シナリオで複雑なデータ管理操作が必要な場合は、ソリューションのロジックに何らかの形式のバッチ処理を含める必要があります。 たとえば、トランザクションを利用してデータを複数の独立したバッチに分けて処理すると、障害が発生した場合でも最初から再起動するのではなく、中間チェックポイントから再開することができます。

スケールアウト クエリのレプリカ

REST またはカスタム ロジックのどちらを使用する場合でも、バッチの処理中にクライアント アプリケーション クエリから一貫性のない結果または中間結果が返される可能性があります。 処理中にクライアント アプリケーション クエリによって返される一貫性のあるデータが必要であり、モデル データが中間状態の場合は、読み取り専用クエリ レプリカで スケールアウト を使用します。

読み取り専用クエリ レプリカを使用すると、更新がバッチで実行されている間も、クライアント アプリケーション ユーザーは読み取り専用レプリカ上のデータの古いスナップショットに対して引き続きクエリを実行できます。 更新が完了すると、同期操作を実行して、読み取り専用レプリカを最新の状態にすることができます。

次のステップ

REST API を使用した非同期更新
Azure Analysis Services のスケールアウト
Analysis Services の高可用性
Azure サービスの再試行ガイダンス