Spanner に関する投稿を表示しています

Google Cloud Spanner のスロークエリ(的なもの)を集める spanner-query-stats-collector を作った

こちらです。
sters/spanner-query-stats-collector: Google Cloud Spanner's query stats collector


Google Cloud Spanner には発行されたクエリがどれくらい CPU をつかったのか、どれだけのスキャンをしたかといった情報が記録されていくテーブルがあります。
Query statistics tables | Cloud Spanner | Google Cloud

このテーブルは GCP コンソール Spanner 上からでも参照できますし、実際に存在しているテーブルのようなので SELCT して取得することもできます MySQL でいうところのスローログをテーブルに書き出しているような状態です。
これを見ることによって CPU をよく使うクエリが出ていないか、スキャンが多すぎるのでインデックスの最適化ができるのではないか、などといった Spanner を利用することに関して改善していくことができるようになります。または、開発/検証環境として使える Spanner データベースがあれば、そこでの様子を定期的にウォッチすることで、本番に出す前のクエリの怪しさも一定見ることができる、かもしれません。
(本番の場合はレコード数や発行回数が異なりすぎて、参考にならないかもしれませんが。。)

と、いうところから、これを作りました。

cmd 以下の main では 1 分おきに 1 分間のクエリ統計テーブルを参照し JSON で標準出力へと書き出します Dockerfile として作ったものはそれの docker 化したものです。
Credential さえ入ればクエリが発行できるので、例えば GCP の各種コンピューティングリソース(GCE GKE CloudRun などなど)からの利用は容易にできるはずです Spanner を参照できる権限を付与したサービスアカウントがあれば使えると思います(手元の認証情報でしか試してないので。。)