spannerz icon indicating copy to clipboard operation
spannerz copied to clipboard

Google Cloud Spanner Query Planner Visualizer

spannerz

spannerz adds an HTTP handler to your binary to report query plans from Google Cloud Spanner clients. You can use spannerz as a standalone binary too.

NOTE: You need Graphviz installed for visualization features.

Goals

  • Allow users to investigate their client setup in production without having to redeploy new versions.
  • Allow users to run a visualizer outside of Google Cloud Console.

Usage

Standalone binary:

$ go get -u github.com/rakyll/spannerz
$ spannerz -db projects/PROJECT/instances/SPANNER_INSTANCE/databases/SPANNER_DB

HTTP handler:

import (
    "cloud.google.com/go/spanner"
    "github.com/rakyll/spannerz/spannerz"
)

client, err := spanner.NewClient(ctx, "projects/PROJECT/instances/SPANNER_INSTANCE/databases/SPANNER_DB")
if err != nil {
    log.Fatalf("Cannot create Spanner client: %v", err)
}
http.Handle("/spannerz", &spannerz.Handler{
    Client: client,
})
log.Fatal(http.ListenAndServe(":9090", nil))

Screenshot

Roadmap

  • Allow running only the query planner without executing the query.
  • Support different optimizer versions.
  • Support partition queries.
  • Support read/write transactions, we currently support read-only ones.

Disclaimer

This is not an official Google product.