On Fri, Jan 30, 2015 at 3:57 PM, David Barbour <dmbarbour@gmail.com> wrote:

For my current use case, I believe that I can still achieve a sufficient level of parallelism even if limited to double-buffering (whereas two snapshots would give me triple-buffering). I'm not going to press for any changes at this time.


After having examined this further, I've changed my mind.

With triple buffering, I can guarantee that the writer *almost* never waits on a short-running reader, and that the readers never wait on the writer. With double buffering, the probability of the writer waiting on even short-running readers, assuming they are frequent, is nearly 100%. Triple buffering is thus a huge advantage for users of MDB_NOLOCK.

The update to support this is almost trivial: tweak `mdb_find_oldest` such that both meta-page snapshots are considered to have active readers. I'm willing to develop and submit a patch, but only if this change also sounds good to the main LMDB developers.

Regards,

Dave