Cloud Spanner Unofficial Hacks

Cloud Spanner は分散システムであり、SQL クエリの実行は場合によっては複雑な分散ストリーム処理となりうる。 よって、パフォーマンス劣化を起こさないように SQL の表現力による利益を得るには Cloud Spanner の低レベルアーキテクチャと高レベルのクエリ実行について両方理解する必要がある。

しかし、実行計画の活用やクエリチューニングについてはまだ公式にもコミュニティでも十分語られているとは言えない。 ここでは Cloud Spanner のクエリパフォーマンスに関係するドキュメントや API のレスポンスに含まれる実行計画の内容について、 公式には説明されていないことも含めた理解とその活用方法を解説する。

主にどのような特性を持つかについて説明しており、ベンチマークを行うのであれば実際のデータやワークロードの傾向について知っている立場で行うことを推奨する。

Use The Index, Luke より引用

注意深い実行計画の調査結果は、 うわべだけのベンチマークよりも信用のおけるものです。 完全な負荷テストは意味のあることですが、そのための手間はかかります。

注意

公式に仕様として説明されていないことが多く、間違った内容や今後挙動が変わる事がある。

最終更新 September 28, 2020: Introduce subdirectory (59cc046)