I am still experimenting on this area and noticed that I can actually put more data in LMDB by commiting after each put (for the sake of the test) than by doing one commit in the middle of the data set.
In the end, in terms of amount of data inserted into the database, the big picture is:
1 commit at the end > 1 commit after each put > 1 commit in the middle of the data set + 1 commit at the end
And mdb_stat can't really help anticipating MDB_MAP_FULL (maybe that wasn't its purpose).
Anyway, if anybody had a hint about the maximum "reserved pages" (for internal purpose) that I could subtract from the map size, I would be very grateful to hear about it.
With best regards,
Bruno (lmdb enthousiast).
De : openldap-technical [email@example.com] de la part de Bruno Freudensprung [firstname.lastname@example.org]
Envoyé : jeudi 31 décembre 2015 10:02
À : email@example.com
Objet : LMBD questions (stat & copy)
By "total number of pages" I mean ms_branch_pages + ms_leaf_pages + ms_overflow_pages.
Do you think I am on a wrong track? (maybe mdb_stat does not show 24 "internal-purpose" pages in the second case? or I am forgetting something?).
One last remark: it seems that mdb_env_copy(db, copy_dir) is possible during a write transaction on Windows (like stated in the documentation), but not on Linux (the test program
seems to be stopped on a mutex at line 62). This can be tested by changing the copy_test variable to 1 at line 19. Is it expected given my program?