shinofara.dev

BigQueryのLong Term Storageが高いなーとおもったので可視化と解決した

BigQueryのストレージコストが増加していたため、INFORMATION_SCHEMAを使って可視化・原因特定し、不要なシャーディングテーブルを削除してコストを数百ドル削減した記録。

shinofara1分で読める
目次+

BigQueryを使う頻度が増えてきた事もあり、一度コストをしっかりみるかと思い。見たことがきっかけ。

とりあえず9月から増えだした事は理解

そもそもLong term storageって?

cloud.google.com

Long-term storage includes any table or table partition that has not been modified for 90 consecutive days. The price of storage for that table automatically drops by approximately 50%. There is no difference in performance, durability, or availability between active and long-term storage.

90日連続して変更されていないテーブル(またはパーティション)

もうツールを作成して少し調べてみた

INFORMATION_SCHEMAを用いたBigQueryのストレージ無駄遣い調査 - ZOZO TECH BLOG

techblog.zozo.com

が役に立ちました。

  1. この記事内に書かれているスクリプトを Colab で実行してBQにテーブルを作成して集約
  2. Looker(旧Data Studio)で可視化

調べてみるとテーブル数が多い。このテーブルはシャーディング(_yyyymmmdd

更に7月まではシャーディングで取得していたけど、このタイミングからdbtなどで取得方法が変わっていて、シャーディングテーブルはつくられなくなっていた。

原因は特定できたので、あとは消すか消さないか。消すにしてもすべて消すか一部残すか。利用用途など色々確認した結果不要と判断したので、削除することにしました

削除編

SELECT
 CONCAT("bq rm -f -t ",table_schema,".",   table_name, ";" )
 FROM `<project_id>.<dataset>`.INFORMATION_SCHEMA.TABLES
 WHERE 
   table_name LIKE "<ここにprefix>_%"
ORDER BY table_name

これで削除コマンドが出力されるのであとは実行するだけでした。

結果1番先頭のテーブルは残りましたが、それ以外はスッキリしました。コストとしても数百ドル下がる結果ととなりました。もしBQのコストにお悩みの方がいたら参考にしていただければと思いました。

INFORMATION_SCHEMAを用いたBigQueryのストレージ無駄遣い調査 - ZOZO TECH BLOG

techblog.zozo.com

改めてになりますが、参考になりました感謝です。

shinofaraソフトウェアエンジニア。AI と人間の協働による開発に関心を持つ。

Written by human記事一覧に戻る