Some indexing structures are write optimized in
that they are better than B-trees at ingesting data. Other
indexing structures are read optimized in that
they are better than B-trees at query time. Even within B-trees,
there is a tradeoff between write performance and read
performance. For example, non-clustering B-trees (such as MyISAM)
are typically faster at indexing than clustering B-trees (such as
InnoDB), but are then slower at queries.
This post is the first of two about how to understand write
optimization, what it means for overall performance, and what the
difference is between different write-optimized indexing schemes.
We’ll be talking about how to deal with workloads that don’t fit
in memory—in particular, if we had our data in B-trees, only the
internal nodes (perhaps not even all of them) would fit in
As I’ve already said, there is a tradeoff between write and read …[Read more]