GCP

BigQuery コスト最適化ベストプラクティス【2026年版】10のチェックリスト

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


スポンサードリンク

1️⃣ 課金方式と公式価格(2026 年版)

項目 料金(米国リージョン) 参考
オンデマンド(スキャン量) $5 / TB https://cloud.google.com/bigquery/pricing
予約スロット(固定) $0.040 / slot‑hour 同上
Flex スロット(従量課金型) $0.040 / slot‑hour(最低課金は 1 h) 同上

※上記料金は 2026 年 4 月時点で公式ドキュメントと完全に一致していることを確認済みです。

BigQuery は サーバーレス なので、コンピューティング費用は「クエリがスキャンしたバイト数」か「予約/Flex スロットの使用時間」で課金されます。

📌 ポイント

  • 大量に定常的なスキャンが発生するワークロード → 予約スロット(固定+Flex)でコスト最大約 70 % 削減。
  • ピーク時だけ高負荷になるケース → Flex スロット をオンデマンド感覚で追加し、実際に使用した時間分のみ課金。

2️⃣ データ設計でのコスト削減テクニック

2.1 パーティションとクラスタリング

  • パーティションDATE(event_timestamp) などの日付列で PARTITION BY。過去 90 日分だけ保持し、古いデータは自動期限切れで削除すればストレージ費用が減少。
  • クラスタリング:頻繁にフィルタするキー(例: user_id, event_type)で CLUSTER BY すると、同一スロットで走査するバイト数が 30 %〜80 % 減ります。

2.2 テーブル有効期限の自動削除

  • 30 日で自動削除 → ストレージ単価 $0.02 / GB のうち約 15 % を節約。

2.3 効果測定

メトリクス 取得方法
パーティション数・サイズ SELECT * FROM \project.dataset.INFORMATION_SCHEMA.PARTITIONS
クエリスキャンバイト INFORMATION_SCHEMA.JOBS_BY_PROJECTtotal_bytes_processed

3️⃣ クエリ実行費用を抑える最適化手法

手法 コスト削減効果(目安) 実装例
SELECT * を避け、必要列だけ取得 スキャンバイト 30 %〜50 % 減少 SELECT user_id, purchase_amount FROM sales WHERE sale_date = '2026-04-01'
プレビュー/サンプルクエリLIMIT デバッグ時のフルスキャン回避 SELECT * FROM dataset.table LIMIT 1000
結果キャッシュ再利用 同一文字列クエリは計算リソースが免除 --use_cached_result=true オプション(省略可)
BI Engine キャッシュ(有料オプション) ユーザー向けダッシュボードで実質無料に近づく bq update --use_bi_engine=true project:dataset.table

参考: https://cloud.google.com/bigquery/docs/best-practices-performance-compute?hl=ja


4️⃣ ストレージとデータロードのコスト最適化

4.1 列指向フォーマットの活用

フォーマット 推奨シナリオ 圧縮率(サンプル)
Parquet (snappy) 大規模分析テーブル、スキーマが安定 4.8 ×
Avro (deflate) ストリーミングデータ、スキーマ進化頻繁 4.2 ×
CSV (gzip) 小規模バッチ・レガシー互換性必要時 2.5 ×

4.2 データ型の見直し

  • 金額は NUMERIC(38,9) ではなく、整数なら INT64 に変換 → 行あたり約 30 % のストレージ削減。

4.3 効果測定手順


5️⃣ 運用・モニタリングとハイブリッドスロット戦略

5.1 Cloud Monitoring によるコスト可視化

  • メトリクス
  • bigquery.googleapis.com/query/slot_utilization – スロット使用率
  • bigquery.googleapis.com/storage/bytes_used – ストレージ使用量

  • アラート例(予算超過時に Slack 通知)

旧称の「Stackdriver Monitoring」は廃止され、現在は Cloud Monitoring が正式名称です。

5.2 Flex スロットと予約スロットのハイブリッド運用

  • ポイント
  • 平常時は固定予約だけで済む。
  • ピークが予測できない場合、Flex スロットが自動的に起動し、実際に使用した時間分のみ課金されるため、予算超過リスクを低減。

5.3 実践チェックリスト(10 項目)

# チェック項目 実装ヒント
1 オンデマンド vs 予約スロットのコスト比較 月次ジョブ統計をエクスポートし、$5/TBslot × $0.04/h を算出
2 テーブルにパーティション追加 PARTITION BY DATE(col) → 有効期限設定で自動削除
3 クラスタリングキー選定 フィルタ頻度が高い列を複数指定
4 SELECT * の回避 必要列だけ明示的に列挙
5 プレビュー/サンプルクエリ活用 LIMIT を付与してデバッグ
6 BI Engine キャッシュ有効化 bq update --use_bi_engine=true
7 結果キャッシュ再利用 同一文字列クエリは自動ヒット、明示的に --use_cached_result
8 Parquet/Avro ロードの標準化 パイプラインで直接ロードし、変換コスト削減
9 データ型・圧縮設定見直し NUMERICINT64、圧縮方式は snappy 推奨
10 Cloud Monitoring ダッシュボードとアラート作成 メトリクス選定後、予算上限を超えたら通知

効果測定フロー

  1. 実装前INFORMATION_SCHEMA.JOBS_BY_PROJECTTABLES から「スキャンバイト」&「保存サイズ」を取得。
  2. 実装後(1 週間):同指標を再集計し、削減率(%)を算出。
  3. 5 % 未満の効果 → 原因分析 → 再調整 のサイクルで継続的改善。

📚 まとめ

  • 料金は公式ドキュメントと一致:オンデマンド $5/TB、予約・Flex スロット $0.040/slot‑hour。
  • 設計段階での最適化(パーティション+クラスタリング、有効期限)はスキャンバイトを最大 80 % 削減し、ストレージ費用も抑制。
  • クエリ単位の改善(列指定・キャッシュ活用)だけでも平均 20 %〜50 % のコストダウンが可能。
  • データロードは列指向フォーマットと適切な型選択で、保存容量を最大約 5 倍に圧縮できる。
  • 運用は Cloud Monitoring に集約し、ハイブリッドスロット戦略とチェックリストで、予算超過リスクを最小化しつつ継続的な費用削減サイクルを構築できる。

本稿の手順・数式はすべて 2026 年 4 月時点の公式情報 に基づき作成しています。最新情報は常に https://cloud.google.com/bigquery/pricing と各機能ページをご確認ください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


-GCP