ジョブの実行が遅い理由は?
MaxCompute におけるジョブの実行遅延は、通常以下の3つの要因のいずれかに起因します:リソース競合、ジョブレベルの課題(例:データスキューまたはデータ肥大化)、および MaxCompute クエリアクセラレーション (MCQA) から通常モードへのモードロールバックです。課金モデルに最も関連性の高い要因から調査を開始してください。
| 原因 | 発生時 | 対応方法 |
|---|---|---|
| リソース不足 | リソース使用量が高い、同時実行ジョブ数が多い、またはジョブ優先度が低い場合 | クォータ消費状況を確認し、ジョブを最適化するか、リソース構成を調整してください |
| ジョブ例外 | データスキュー、非効率なユーザー定義関数 (UDF)、またはデータ肥大化が発生している場合 | Logview を使用して根本原因を診断し、SQL を最適化してください |
| モードロールバック | MCQA ジョブが通常モードへとロールバックした場合 | MCQA の適用条件を再確認し、ジョブがクエリ結果を返さずに大量のデータを処理していないかを確認してください |
リソース不足
サブスクリプションコンピューティングリソース: クォータが継続的に上限に達している、またはその近傍にある場合、ジョブはリソース割り当てのためにキューで待機します。特に、ランタイムデータ量が大きい場合、リソース要求が高い場合、またはジョブの優先度が低い場合です。『新しい MaxCompute コンソールでのクォータ管理』の「クォータ使用量の表示」セクションに記載されている手順に従い、MaxCompute コンソールで現在のクォータ使用量を確認してください。使用量が長期間にわたり上限に達したままになる場合は、ジョブ実行の最適化、またはリソース構成の変更を行ってください。最適化オプションについては、「新しい MaxCompute コンソールでのジョブ管理」をご参照ください。
従量課金コンピューティングリソース:従量課金リソースプールは、すべてのユーザー間で共有されます。ジョブはオンデマンドでリソースを競合し、一定量を予約することはできません。多くのジョブが同時に実行されると、リソース競合により実行が遅くなります。
ジョブ例外
データスキュー、UDF の実行効率が低いこと、およびデータ肥大化は、SQL ジョブの実行が遅くなる一般的な原因です。Logview を使用して、どの要因があなたのジョブに影響を与えているかを特定します — 手順については、「実行が遅いジョブの診断」をご参照ください。根本原因を特定したら、「SQL ステートメントの最適化」をご参照ください。
モードロールバック
MaxCompute クエリアクセラレーション (MCQA) は、小規模なデータ量に対するインタラクティブなクエリを、通常モードと比較して高速化します。ただし、MaxCompute ではジョブが常に MCQA モードで実行されることを保証していません。一部のケースでは、MCQA ジョブがロールバックし、通常モードへと移行することがあり、その結果、想定よりも実行速度が低下します。
大量のデータを処理し、クエリ結果の返却を必要としないジョブは、通常モードでのみ実行可能です。MCQA は適用されません。ほとんどの場合、リソースおよびジョブの状態が正常であれば、通常モードでの実行時間は概ね一定です。