tdb2: direct access during transactions.
Currently we fall back to copying data during a transaction, but we don't
need to in many cases. Grant direct access in those cases.
Before:
$ ./speed --transaction
1000000
Adding
1000000 records: 2409 ns (
59916680 bytes)
Finding
1000000 records: 1156 ns (
59916680 bytes)
Missing
1000000 records: 604 ns (
59916680 bytes)
Missing
1000000 records: 604 ns (
59916680 bytes)
Traversing
1000000 records: 1226 ns (
59916680 bytes)
Deleting
1000000 records: 1556 ns (
119361928 bytes)
Re-adding
1000000 records: 2326 ns (
119361928 bytes)
Appending
1000000 records: 3269 ns (
246656880 bytes)
Churning
1000000 records: 5613 ns (
338235248 bytes)
After:
$ ./speed --transaction
1000000
Adding
1000000 records: 1902 ns (
59916680 bytes)
Finding
1000000 records: 1032 ns (
59916680 bytes)
Missing
1000000 records: 606 ns (
59916680 bytes)
Missing
1000000 records: 606 ns (
59916680 bytes)
Traversing
1000000 records: 741 ns (
59916680 bytes)
Deleting
1000000 records: 1347 ns (
119361928 bytes)
Re-adding
1000000 records: 1727 ns (
119361928 bytes)
Appending
1000000 records: 2561 ns (
246656880 bytes)
Churning
1000000 records: 4403 ns (
338235248 bytes)