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 | |||
|---|---|---|---|---|
| 1 | 50 | 250 | 500 | |
| random reads | 1212 | 593 | 479 | 241 |
| random reads (mem) | 10811 | 8511 | 8000 | 6250 |
| random writes | 8850 | 3745 | 3425 | 2000 |
| sequential reads | 4425 | 2463 | 2625 | 2469 |
| sequential writes | 8547 | 3623 | 2451 | 1905 |
| scans | 15385 | 10526 | 9524 | 7843 |
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.
