完全にメモ
とあるソシャゲのAPIサーバで Spanner を使った。 このとき元々は Mutation を利用していたのだが、以下の理由で Statement DML に変えた。
もともと
API サーバではクライアントからのリクエストを処理し、その結果に応じてミッションやアチーブメントの達成などさまざまなイベントを処理している。このときリクエストによって促された変更を1トランザクションの中で扱い、ロールバック時はイベントも破棄という仕様を考えていた。
そのためトランザクション内の先に実行された INSERT や UPDATE などのクエリ結果がコミットまで参照できない Mutation との相性が悪く、Statement DML を利用する方式に変更した。
性能試験
Statement DML は都度 SQL を発行するため便利なのだが、負荷試験によってクエリを大量に呼んでいることがわかりレイテンシーが 500msec
とかになっていた。