Performance

Performance

Bigtable delivers high throughput and low latency through a log-structured write path, immutable SSTables, background compaction, and smart read-side acceleration (block cache, scan cache, Bloom filters, and locality groups). This page summarizes how those pieces translate into real-world performance and what to tune for your workload.

Throughput @ scale Low-latency reads Log-structured writes Bloom filters Compactions

1. Read vs. Write Anatomy

Write Path (Fast ingest)

  • Client mutation → commit log append (group commit) + memtable insert.
  • Memtable flush → minor compaction to SSTable (immutable, sorted).
  • Background merging/major compactions bound read fan-out and reclaim deletes/TTL.

Read Path (Low latency)

  • Serve from memtable + a small set of SSTables (merged view).
  • Block cache accelerates sequential & near-neighbor access.
  • Scan cache amortizes RPCs for range scans.
  • Bloom filters skip SSTables that cannot contain the key.

2. Latency & Throughput Patterns

Different access patterns stress different subsystems. Use the right locality and caching to stay in the “fast lane.”

Point Reads

  • Enable row/row+col Bloom in hot families.
  • Keep small, frequently read families in-memory via locality groups.
  • Prefer smaller block sizes for tiny values to reduce over-fetch.

Sequential Scans

  • Leverage scan APIs to amortize RPCs.
  • Co-locate co-read columns in the same locality group.
  • Use compression for cold, scan-heavy data.

Write-Heavy

  • Distribute keys to avoid hot tablets (salt or hash prefixes).
  • Bound version count and set TTL to reduce compaction load.
  • Monitor compaction backlog and adjust flush thresholds.

3. Figure 6 — Per-Server Operations per Second

Experiment # of Tablet Servers
150250500
random reads1212593479241
random reads (mem)10811851180006250
random writes8850374534252000
sequential reads4425246326252469
sequential writes8547362324511905
scans153851052695247843
Per-tablet-server throughput (ops/sec). Aggregate throughput = rate × number of servers.

4. Scaling Behavior (Aggregate)

– Throughput scales with more servers; slight per-server drop from coordination overhead.

– Horizontal scaling preserved by simple control plane and direct client→tablet-server data path.