[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.