Flash memory properties of no-overwrite and high random
I/O performance (comparatively to hard disks) favor
the shadow paging approach. A page in flash memory
has to be erased before it is written to. To hide the erase
latency, flash-based SSDs1 redirect the write to a free
page by invalidating the old one and using a mapping
table in the FTL (Flash Translation Layer) to remap the
page. So, a page is atomically updated in SSDs by simply
updating the mapping entry in the FTL mapping table.
Because of this simplicity provided by the FTL mapping
table, providing support inside SSDs for transactions is
attractive.
Recent research [4], [5], [6] proposes to support transactions
inside an SSD by introducing a new interface,
WriteAtomic, and providing multi-page update atomicity.
Transaction support in the SSD (i.e., embedded transaction
support) frees the system from high-overhead transaction
recovery support, and thus nearly doubles system
performance due to the elimination of duplicated log
writes [4], [5]. Unfortunately, these proposals support a
limited set of isolation levels; mainly, strict isolation, which
requires all transactions to be serialized, i.e., executed
one after another. This limits transaction concurrency
and hurts the usage of the storage device for transactions
for two reasons. First, different systems make different
tradeoffs between performance and consistency by allowing
different isolation levels among transactions [7].
Not supporting a wide variety of isolation levels makes
the system inflexible as it does not give the software
the ability to choose the isolation level. Second, strict
isolation limits the number of concurrent requests in the
SSD (as only one transaction can execute at a time) and