クエリ パフォーマンスの最適化の概要
概要
一般的に、操作の少ないクエリほど優れたパフォーマンスを発揮します。クエリのパフォーマンスが向上すると、リソースの使用量が少なくなります。これにより、コストが削減され、障害が減少します。このページでは、BigQuery のクエリ パフォーマンスを向上させる最適化手法の概要と、詳細情報へのリンクを示します。
クエリのパフォーマンス
BigQuery でクエリのパフォーマンスを評価する場合、必要な操作量は次のようなさまざまな要因によって異なります。
- 入力データとデータソース(I/O): クエリで何バイト読み取るか。
- ノード間の通信(シャッフル): クエリから次の段階に何バイト転送するか。クエリは各スロットに何バイトずつ渡すか。
- コンピューティング: クエリにはどのくらいの CPU 作業が必要か。
- 出力(実体化): クエリは何バイト書き込むか。
- クエリのアンチパターン: クエリは SQL のベスト プラクティスに従っているか。
これらの要因の多くは、クエリプランで確認できます。クエリプランは、BigQuery に送信されたクエリごとに生成されます。読み取りバイト数、消費されたスロット時間など、実行の統計情報を確認できます。また、クエリプランは、実行のさまざまな段階を示し、クエリのパフォーマンスを向上させる方法を特定できます。クエリプランの詳細については、クエリプランとタイムラインをご覧ください。クエリプランの例については、サンプルクエリをご覧ください。
スロットの競合が原因で、最適化されたクエリでも実行に時間がかかることがあります。たとえば、6 個のプロジェクト間で 10,000 個のスロットがある場合、それらがすべて 2,000 個のスロットを使用できるわけではありません。これにより、クエリまたはジョブが遅くなる可能性があります。クエリをさらに最適化できない場合は、予約の使用を検討してください。
次のステップ
- BigQuery 監査ログを使用して、クエリの実行に関する問題のトラブルシューティング方法を学習する。
- その他の費用管理手法について学習する。
- BigQuery システム テーブル レポートを使用して、BigQuery の使用状況をモニタリングする方法を学習する。