{
  "slug": "read-amplification",
  "term": "Read amplification",
  "aliases": [],
  "definition": "Read amplification expresses storage-read work per logical read request or per useful byte returned, under an explicitly stated accounting convention.",
  "note": "RocksDB's tuning guide uses physical disk reads per query. Candidate sorted runs, cache lookups, device I/O operations and bytes read are not interchangeable counters. [rocks-tuning] A Bloom-filter model's expected probes per absent lookup is not measured physical I/O: cache hits can eliminate device reads, while cold metadata can add reads. Separate successful lookups, absent lookups and scans, and separate foreground-query reads from compaction reads. A bytes-read/bytes-returned ratio is undefined for an absent query returning zero bytes; report reads per query instead. [hesela]",
  "related": [
    "lsm-tree",
    "leveled-compaction",
    "tiered-compaction",
    "bloom-filter",
    "database-write-amplification"
  ],
  "citations": [
    {
      "id": "rocks-tuning",
      "title": "RocksDB project. Tuning Guide: amplification factors and their accounting boundaries.",
      "url": "https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide",
      "accessed": "2026-10-14"
    },
    {
      "id": "hesela",
      "title": "Hesela. Bloom filters: optimize the lookup, not each filter; compaction and measurement boundaries.",
      "url": "https://hesela.com/analyses/bloom-filters-lsm-read-cost/",
      "accessed": "2026-10-14"
    }
  ],
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-14"
}
