DEV Community

Atsumi
Atsumi

Posted on

BigQueryベストプラクティス (パフォーマンス:3)

公式ドキュメントに記載のある「BigQuery best practices」をまとめてみるシリーズ。

今回は「Managing query outputs」をまとめます。

イタリック体はドキュメントに記載のない追加コメント

クエリアウトプットに関するベストプラクティス

原文

Avoid repeatedly joining the same tables and using the same subqueries.

繰り返し、同じテーブルや同じサブクエリをジョインすることを避ける。

  • 何度も同じテーブルをJOINする場合は、ネストされたカラムを利用して非正規化する。
  • 何度も同じサブクエリを使う場合は、サブクエリをテーブルとしてマテリアライズする。

Carefully consider materializing large result sets to a destination table. Writing large result sets has performance and cost impacts.

巨大な結果セットを書き込む場合、パフォーマンスとコストに影響があるので注意する。

  • キャッシュされた結果セットの上限は10GB程度なので、これを越すと Response too largeエラーに繋がる
  • 避けるには、以下の手段を用いる
    • 適切にフィルターする
    • ORDER BY を利用する場合は LIMIT を利用する
    • 出力テーブルを指定する
  • 巨大なテーブルを作成する場合は、有効期限を設定するなどしてコスト管理する。

If you are sorting a very large number of values, use a LIMIT clause.

巨大なデータセットをそーとする場合、 LIMIT を利用しよう

  • 巨大なデータセットに ORDER BY をすると、 Resource exceeded が発生する。これは、ソートの最終ステージは一つのスロットのみで行われるため、スロットの容量を超えてしまうことで発生する。

Top comments (0)