wiredtiger/wiredtiger — pull request #331 by michaelcahill (2012-09-19 11:56:40+00:00)
Title: Autocommit

These changes implement auto-commit for updates, #309.

Keith, apart from looking at the implementation, the main thing here is the effect on eviction with pathologically small caches (e.g., 3 pages and 20 threads). With the old implicit transaction code, there was code to try to make progress in this case in eviction, by constantly updating the transaction snapshot if a thread had not yet read a page.

Now that auto-commit allocates transaction IDs at the start of an update operation, trying to update the snapshot has minimal impact when all of the threads are waiting on eviction. Instead, what I've done is change the calculation in test/format to make sure there is at least one internal page and one leaf page per thread. Let me know if you think that's unreasonable.