DB_PRIVATE enables a few optimizations by making the assumption that only one process will access the db4 database. Notably, this flag enables db4 to use pthreads-style mutex locking rather than heavy, operating-system-provided flock and shared memory. Ref: DB_ENV->open documentation.
The general motivation is that db4 databases can be safely accessed in parallel with bitcoin client, assuming (a) DB_PRIVATE is removed and (b) bitcoin properly uses db4 transactions. db4 transactions may even be employed to wrap around non-db4 data such as blk0001.dat, if the code is properly architected.
Trying it without the DB_PRIVATE flag in rev 153. We need to keep an eye on what’s different.
On Windows at least, it creates six __db.001 – __db.006 files with sizes from 24K to 4MB. It doesn’t delete them on exit, it just leaves them behind.
The docs say it uses memory mapped files. I assume they have the same file permissions as the database files, so the same user access restrictions apply.
Tests on Windows private LAN download of 78500 blocks:
with DB_PRIVATE 20 minutes 51 seconds
without DB_PRIVATE 20 minutes 51 seconds
I wasn’t expecting them to come out exactly the same.
14,719 total views, 5 views today
https://bitcointalk.org/index.php?topic=920.msg12484#msg12484