Conversation

In addition to writing an interesting paper, it is quite a feat to learn enough about InnoDB and Postgres internals to implement the ideas from the Long-lived Transactions paper.
1
2
The paper names the InnoDB approach as off-row versioning (old versions stored in undo) and the Postgres approach as in-row versioning (old versions co-located in heap table pages). Their idea is SIRO (most recent old version in-row, others use off-row).
1
Long-lived transactions are harmful because they block Postgres vacuum and InnoDB purge. Long-lived means a long running statement with read committed (RC) or a long-open snapshot, running statement or not, with repeatable read (RR). Maybe RR is more likely with MySQL.
1
RocksDB MVCC GC is part of compaction and is not blocked by long open snapshots. It just searches the snapshot list to determine whether an old version of a key cannot be dropped because it is visible to a snapshot. This is easy in an LSM.
1