[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#8475) Feature request: MDB low durability transactions



Full_Name: Ben Trask
Version: 
OS: 
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (192.241.251.11)


Hi,

Transaction commits are one of the few bottlenecks in MDB, because it has to
fsync twice, sequentially.

I think MDB could support mixed low and high durability transactions in the same
database by adding per-page checksums and a third root page. The idea is that
when committing a low-durability transaction, no fsyncs are performed. One of
the two other roots is always consistent on-disk to serve as a "backstop" in the
event of power loss/kernel panic. The two other pages are allowed to alternate,
with consistency only ensured by checksums.

During a restore after a crash, the non-durable roots (if any) get compared
against the third durable root. Any new pages get checksum'd to ensure
integrity. In the worst case, the durable root is used.