There is actually, i saw your question on irc but i couldn't remember why ...
If you don't specify DB_PRIVATE then it causes libdb to setup the database for multiple-process access. This is much more complex/slower/uses more resources than a private database.
DB_PRIVATE
-
Specify that the environment will only be accessed by a single process (although that process may be multithreaded). This flag has two effects on the Berkeley DB environment. First, all underlying data structures are allocated from per-process memory instead of from shared memory that is potentially accessible to more than a single process. Second, mutexes are only configured to work between threads.
On Fri, 2005-05-13 at 11:11 +0100, Ross Burton wrote:
Hi, Whilst investigating the memory usage of the addressbook I noticed that libdb is using malloc() to store pages from the database. This is caused by use of the DB_PRIVATE flag to the env->open call. Removing this flag causes libdb to mmap the database into memory. Personally I can't see a problem with removing the DB_PRIVATE flag, but I'm not exactly a libdb expert. Is there a good reason not to remove this flag? Ross
