Skip to content

B-Tree vs LSM-Tree: Database Storage Engine Mechanics

Core Concept LearningAugust 1, 20263 min read

At the heart of every database system lies a Storage Engine that determines how data is written to disk, indexed, and retrieved. Relational databases like PostgreSQL and MySQL traditionally use B-Trees (and B+ Trees), whereas high-throughput key-value and NoSQL stores like RocksDB, Cassandra, and LevelDB use Log-Structured Merge-trees (LSM-Trees).

This guide breaks down the structural differences between B-Tree in-place updates and LSM-Tree append-only writes, analyzing write amplification, read latency, compaction algorithms, and SSD longevity.

Five PostgreSQL index types and what they're for
Five PostgreSQL index types and what they're for

In-Place B-Tree Updates vs. Append-Only LSM-Trees

B-Trees break data down into fixed-size pages (typically 4 KB to 16 KB) organized in a balanced search tree hierarchy. Writes update pages in-place on disk. To prevent corruption during partial page writes, B-Tree databases write changes to a Write-Ahead Log (WAL) before modifying disk pages.

LSM-Trees avoid random in-place disk writes entirely. Incoming writes are appended to an in-memory skip-list (MemTable) and written sequentially to a Write-Ahead Log. When the MemTable fills up, it is flushed to disk as an immutable SSTable (Sorted String Table).

Quick reference

  • B-Tree: Optimized for fast point and range reads ($O(\log N)$), but suffers from random write I/O overhead on disk.
  • LSM-Tree: Converts random writes into sequential disk I/O, delivering massive write throughput.
  • LSM-Tree Compaction: Background processes periodically merge smaller SSTables to reclaim deleted keys and maintain read efficiency.
B-Tree vs LSM-Tree Write Path
1B-Tree Write Path (In-Place Update):2  Client Write -> Write-Ahead Log (WAL) -> Update Fixed Disk Page In-Place3 4LSM-Tree Write Path (Append-Only Sequential):5  Client Write -> WAL + In-Memory MemTable -> Flush to Immutable SSTable on Disk
RocksDB LSM-Tree Level Compaction Concept
1[MemTable (RAM)]  -> Flush ->  [Level 0 SSTables (Disk)]2                                       |3                                   Compaction4                                       v5                               [Level 1 SSTables (Disk)]6                                       |7                                   Compaction8                                       v9                               [Level 2 SSTables (Disk)]

Remember this

B-Trees optimize for fast read queries; LSM-Trees optimize for high-concurrency write ingestion.

Write Amplification & SSD Hardware Impact

Write Amplification Factor (WAF) measures the ratio of bytes written to underlying storage relative to bytes submitted by the application. In B-Trees, updating a single 50-byte row requires writing an entire 8 KB or 16 KB page to disk, resulting in high write amplification and faster NVMe SSD wear.

LSM-Trees minimize initial write amplification by buffering writes sequentially in RAM before flushing. However, background SSTable compaction generates deferred write amplification as data cascades down storage levels.

Quick reference

  • High B-Tree write amplification can shorten SSD lifespan in write-heavy production workloads.
  • Bloom Filters are placed in front of LSM-Tree SSTables to prevent expensive disk lookups for non-existent keys.
  • Compare with Database Indexing Mechanics and PostgreSQL vs MongoDB.

Remember this

LSM-Trees extend SSD hardware lifespan under heavy write workloads by eliminating random page overwrites.

Storage Engine Selection Matrix

Choosing between B-Tree and LSM-Tree storage engines depends on your application's read-to-write query ratio.

For related guides, see our articles on Sharding & Replication and Query Execution Plans.

Quick reference

  • Choose B-Tree (PostgreSQL, MySQL InnoDB, SQLite) for read-heavy relational workloads, complex JOINs, and point updates.
  • Choose LSM-Tree (RocksDB, Cassandra, ScyllaDB, CockroachDB) for write-heavy telemetry, event logging, and time-series data.
  • Hybrid engines like WiredTiger (MongoDB) use B-Trees for indexes and LSM options for log collections.

Remember this

Match B-Tree engines to read-heavy relational apps and LSM-Tree engines to high-volume write ingestion pipelines.

Key takeaway

Understanding B-Tree in-place updates versus LSM-Tree append-only SSTables empowers developers to choose the optimal database storage engine for performance and hardware longevity.

Share:
SH

Shoaib Hossain

Lead Author & Systems Architect

Software engineer and distributed systems architect specializing in backend scalability, cloud-native infrastructure, databases, and AI engineering workflows. Author and maintainer of Core Concept Learning.

Human-Engineered & Fact-CheckedOriginal Visual DiagramsEditorial Standards →Send Feedback

Related Articles

As relational databases grow beyond millions to billions of rows, single-table query performance degrades due to massive…

Read

Selecting the right primary database is one of the most critical architectural decisions for software teams. PostgreSQL …

Read

Database queries executing against multi-million row tables suffer severe latency spikes if the database storage engine …

Read

Keep learning

Follow a structured path or browse all courses to go deeper.