I believe InnoDB storage engine architecture is great for a lot
of online workloads, however, there are no silver bullets in
technology and all design choices have their trade offs. In this
blog post I’m going to talk about one important InnoDB limitation
that you should consider.
InnoDB is a multiversion concurrency control (MVCC) storage
engine which means many versions of the single row can exist at
the same time. In fact there can be a huge amount of such row
versions. Depending on the isolation mode you have chosen, InnoDB
might have to keep all row versions going back to the earliest
active read view, but at the very least it will have to keep all
versions going back to the start of SELECT query which is
currently running.
In most cases this is not a big deal – if you have many short
transactions happening you will have only a few row versions to
deal with. If you just use the system for reporting queries but
do not …
[Read more]