トラブルシューティングの概要
このドキュメントでは、BigQuery の問題のトラブルシューティングに役立つ診断ツール、テレメトリー インターフェース、ドキュメント リソースの概要について説明します。
クエリの失敗、パフォーマンスのボトルネック、権限エラー、割り当て上限、データの取り込みの問題が発生した場合は、BigQuery に組み込まれているツールを使用して、根本原因を特定し、問題を迅速に解決できます。
トラブルシューティングのワークフロー
BigQuery の問題を効果的にトラブルシューティングするには、次の診断基準を検討してください。
- 症状と障害モードを特定します。タスクの結果を確認して、問題がハード障害(エラーコードやジョブの失敗など)、パフォーマンスの低下(クエリの遅延やスロットの不足など)、権限拒否、予期しない費用の不一致のいずれであるかを判断します。
- ジョブ実行の詳細を確認します。 Google Cloud コンソールのジョブ エクスプローラ、クエリ実行グラフ、またはコマンドライン ツールを使用して、ステージレベルのタイミング、スロット割り当て、エラーの詳細を確認します。Gemini Cloud Assist に問題の調査を依頼することもできます。
- テレメトリーとメタデータを分析します。情報スキーマ ビューをクエリするか、Cloud Audit Logs を調べて、ジョブの動作とリソース競合、予約上限、管理上の変更を関連付けます。
- 対象を絞った緩和策を適用します。カテゴリ固有のトラブルシューティング ガイドまたは防御的 SQL 関数を使用して、根本原因を修正します。
トラブルシューティングと最適化を区別する
BigQuery を使用する場合は、トラブルシューティング、パフォーマンスの最適化、ベスト プラクティスを区別することが重要です。
- トラブルシューティング。ジョブが正常に完了しない原因となる予期しない障害、ランタイム エラー、パイプラインの破損、割り当ての枯渇、意図しない動作の診断と解決に重点を置きます。
- パフォーマンスの最適化。すでに正常に実行されているクエリとワークロードの実行速度、レイテンシ、リソース効率の改善に重点を置きます。詳細については、クエリ パフォーマンスを最適化するをご覧ください。
- ベスト プラクティス。データ モデリング、ストレージ、セキュリティ、費用管理のアーキテクチャ パターンと設計パターンに焦点を当てています。詳細については、ベスト プラクティスの概要をご覧ください。
診断ツール
以降のセクションでは、ワークロード全体の問題の診断に役立つ BigQuery インターフェースと自動化ツールについて説明します。
ビジュアル ツールとコンソール ツール
次のツールは、Google Cloud コンソールから BigQuery のトラブルシューティングを行うのに役立ちます。
- ジョブ エクスプローラ。SQL クエリを記述せずに、プロジェクトまたは組織全体の過去のジョブと実行中のジョブを検索、フィルタ、検査できます。エラー メッセージ、スロット使用率、実行タイムライン、ジョブ メタデータを表示できます。詳細については、ジョブ エクスプローラでジョブをモニタリングするをご覧ください。
- クエリ実行グラフ。クエリのステージごとの実行プランを視覚的に確認します。実行グラフは、シャッフルがディスクにスピルする、計算バウンド ステージ、データスキュー、入出力の遅延などのボトルネックを特定するのに役立ちます。詳細については、クエリのパフォーマンス分析情報を取得するをご覧ください。
- Query Insights とリソースグラフ。スロット使用率、ジョブの同時実行、予約割り当てのリアルタイム グラフと履歴グラフを表示して、容量の制約を診断します。詳細については、管理リソースグラフを使用するをご覧ください。
- Gemini Cloud Assist in BigQuery。失敗したクエリとパフォーマンスのボトルネックのコンテキストに応じた AI 支援分析を取得します。Gemini Cloud Assist は、Google Cloud コンソールでエラーコードを説明し、問題のある SQL 構文をハイライト表示して、修復手順を提案します。詳細については、Gemini Cloud Assist を使用してクエリのトラブルシューティングを行うをご覧ください。
コマンドラインと自動診断ツール
次のツールは、コマンドライン インターフェースから BigQuery の問題を診断するのに役立ちます。
- bq コマンドライン ツール。
bq show -j <var>JOB_ID</var>コマンドを使用するか、クエリ コマンドに--format=prettyjsonフラグを追加して、詳細なエラー構造、リクエスト ID、ジョブ メタデータを検査します。詳細については、CLI コマンドのトラブルシューティングをご覧ください。 gcpdiagツール。コマンドラインから自動診断を実行して、IAM 権限のギャップ、ネットワーク制限、サービス アカウント エラーなど、一般的な Google Cloud 構成の問題を検出します。詳細については、gcpdiagを使用してクエリの失敗をトラブルシューティングするをご覧ください。
メタデータとテレメトリー ビュー
情報スキーマ ビューを使用すると、標準 SQL を使用して、ジョブ、容量、ストリーミング取り込み、データセットに関するリアルタイムのメタデータと履歴メタデータをクエリできます。これらのビューには次のものが含まれます。
- ジョブ実行テレメトリー。
INFORMATION_SCHEMA.JOBSとINFORMATION_SCHEMA.JOBS_TIMELINEに対してクエリを実行して、ジョブ全体のスロット(ミリ秒)の消費量、スピルされたバイト数、キュー時間、エラーコードを分析します。 - 予約と容量。
INFORMATION_SCHEMA.RESERVATIONSとINFORMATION_SCHEMA.CAPACITY_COMMITMENTSをクエリして、スロット割り当て、予約の上限、自動スケーリングの動作を診断します。 - ストリーミングと取り込み。
INFORMATION_SCHEMA.STREAMING_TIMELINEをクエリして、取り込みレイテンシとストリーミング レート制限を特定します。 - ストレージとパーティションの健全性。
INFORMATION_SCHEMA.TABLE_STORAGEをクエリして、物理テーブルのサイズ、アクティブ ストレージと長期保存の比較、パーティションの分布を調べます。
詳細については、BigQuery INFORMATION_SCHEMA の概要をご覧ください。
Cloud Monitoring と Cloud Audit Logs
- Cloud Audit Logs。管理アクティビティ監査ログとデータアクセス監査ログを確認して、特定のオペレーションを開始したユーザーを追跡し、呼び出し元の ID を検査して、
PERMISSION_DENIEDエラーを診断します。詳細については、BigQuery 監査ロギング リファレンスをご覧ください。 - Cloud Monitoring。スロット使用率、クエリ実行時間、アップロードされたバイト数などの指標を追跡し、しきい値または割り当てを超えたときにチームに通知するようにアラート ポリシーを構成します。詳細については、Cloud Monitoring を使用して BigQuery をモニタリングするをご覧ください。
防御的 SQL 関数とデバッグ ステートメント
ランタイム データエラーが原因でクエリが予期せず失敗するのを防ぐには、次のものを使用します。
- 安全な式。
SAFE_CAST()、SAFE_DIVIDE()、SAFE_OFFSET()、SAFE_ORDINAL()を使用して、データ型や配列の境界が一致しない場合に、実行時エラーを生成する代わりにNULLを返します。ほとんどのスカラー関数はSAFE.接頭辞をサポートしています。詳細については、関数のデバッグとSAFE.接頭辞をご覧ください。 - SQL アサーション。複数ステートメント トランザクションまたはスクリプトで
ASSERTステートメントを使用して、データ検証条件を適用し、ダウンストリーム オペレーションが実行される前にカスタム エラー メッセージで失敗します。詳細については、デバッグ ステートメントをご覧ください。
問題のカテゴリに応じてトラブルシューティングを行う
次のセクションからカテゴリを選択すると、エラーコードの詳細、根本原因、解決手順のガイドが表示されます。
クエリのパフォーマンスと実行
実行に失敗したクエリ、タイムアウトしたクエリ、リソース制約が発生したクエリ、予期しない遅延が発生したクエリを診断します。
- クエリに関する問題のトラブルシューティング。
resourcesExceededエラー、クエリ実行の遅延、シャッフル スピル、メモリ不足の状態、スケジュールされたクエリの失敗を解決します。 - クエリキューの時間が長い場合のトラブルシューティング。インタラクティブ キューまたはバッチキューの上限が原因でキューに登録された同時実行のボトルネックとクエリを診断します。
- エラー メッセージ リファレンス。特定の HTTP エラーコード、エラー理由文字列、推奨される対応を調べます。
Identity and Access Management(IAM)とセキュリティ
アクセス制御の失敗、ロールの割り当ての欠落、データガバナンス ポリシーのブロックを診断します。
- BigQuery の IAM 権限のトラブルシューティングをご覧ください。権限拒否エラーの診断、不足している IAM ロールの付与、Policy Troubleshooter の使用。
- VPC Service Controls のトラブルシューティング。境界違反と上り(内向き)ルールまたは下り(外向き)ルールのブロックを特定して解決します。
- 行レベルと列レベルのセキュリティに関する問題を解決する。データポリシー、ポリシータグ、行アクセス フィルタに関連するアクセス問題を解決します。
割り当て、レート上限、予約
ワークロードが BigQuery サービスの上限または容量の割り当てを超えた場合の問題を解決します。
- 割り当てと上限のエラーをトラブルシューティングする。調整可能な割り当てと調整不可能な割り当てを特定し、同時実行クエリの上限を処理して、API レート制限エラーを解決します。
- 予約に関する問題のトラブルシューティング。 スロットの不足、予約割り当ての不一致、ベースライン容量の不足を診断します。
データの取り込み、ストリーミング、転送
データの読み込み、レコードのストリーミング、外部ソースの同期で発生した障害を診断します。
- 転送構成のトラブルシューティング。Amazon S3、Salesforce、Google 広告、Cloud Storage などのソースで発生した BigQuery Data Transfer Service のエラーを解決します。
- ストリーミング挿入のトラブルシューティング。 Storage Write API と以前のストリーミング取り込みの失敗、行レベルの挿入エラー、スループット割り当てをデバッグします。
- データ読み込みのトラブルシューティング。CSV、JSON、Parquet、Avro のスキーマ解析エラーと区切り文字エラーを解決します。
外部データソースと連携クエリ
BigQuery の外部でデータをクエリする際の接続、認証、実行エラーを診断します。
- Cloud SQL 連携クエリのトラブルシューティング。接続タイムアウト、インスタンス構成の問題、認証情報の失敗を解決します。
請求と費用の不一致
コンピューティングとストレージ全体で予期しない請求と請求の不一致を調査します。
- BigQuery の費用の不一致のトラブルシューティング。予期しない料金の発生源を特定し、課金対象のオンデマンド バイト数を分析して、容量コミットメントの使用状況を確認します。
データ損失の軽減
変更または削除された履歴データを復元したり、リージョン停止中にビジネスの継続性を維持したりするには、次の障害復旧ツールとデータ保持ツールを使用します。
- データを復元します。タイムトラベル期間内に変更または削除されたテーブルデータのクエリまたは復元。詳細については、データを復元するをご覧ください。
- タイムトラベル。構成された保持期間にわたって、更新または削除されたデータをデータセットに保持し、誤った変更を防ぎます。詳細については、タイムトラベルをご覧ください。
- リージョン フェイルオーバー。BigQuery マネージド障害復旧を使用している場合、リージョンが停止したときにセカンダリ レプリカをプライマリ ロールに昇格させます。詳細については、リージョン フェイルオーバーをご覧ください。
API の使用
BigQuery をプログラムで操作する場合は、次のリソースを使用してリクエスト レイテンシを最適化し、アップロード ワークフローを管理します。
- API のパフォーマンスに関するヒント。接続プールの管理、バッチ オペレーションの使用、再試行の処理など、API 呼び出しを行うためのベスト プラクティスに従います。詳細については、API のパフォーマンスに関するヒントをご覧ください。
- API アップロード。REST API の再開可能なアップロード リクエストとマルチパート アップロード リクエストを使用して、データの取り込みのトラブルシューティングと管理を行います。詳細については、API アップロードをご覧ください。
次のステップ
- BigQuery のモニタリングの詳細を確認する。
- BigQuery
INFORMATION_SCHEMAリファレンスを確認する。 - 永続的な問題や重大な本番環境の問題については、Cloud カスタマーケアにお問い合わせください。