Some more test results using mdb_txn_renew() and mdb_txn_reset():
lmdb improved
[1000000] iterations (renew, cursor_open, cursor_close, reset) with [10] databases in [0.29014] seconds [1000000] iterations (renew, cursor_open, cursor_close, reset) with [100] databases in [0.27981] seconds [1000000] iterations (renew, cursor_open, cursor_close, reset) with [1000] databases in [0.45234] seconds [1000000] iterations (renew, cursor_open, cursor_close, reset) with [10000] databases in [1.80193] seconds [1000000] iterations (renew, cursor_open, cursor_close, reset) with [100000] databases in [16.44472] seconds
lmdb original
[1000000] iterations (renew, cursor_open, cursor_close, reset) with [10] databases in [0.29650] seconds [1000000] iterations (renew, cursor_open, cursor_close, reset) with [100] databases in [0.45699] seconds [1000000] iterations (renew, cursor_open, cursor_close, reset) with [1000] databases in [4.16531] seconds [1000000] iterations (renew, cursor_open, cursor_close, reset) with [10000] databases in [49.69454] seconds [1000000] iterations (renew, cursor_open, cursor_close, reset) with [100000] databases in [561.20375] seconds
On 27/05/16 07:37, "Howard Chu" hyc@symas.com wrote:
Jürg Bircher wrote:
Hello
Improved handling for large number of databases
If interested let me know how to contribute.
Looks interesting, yes. I assume you have profiled the code before and after the suggested changes, please provide your profiling results.
Please read the Developer Guidelines. http://www.openldap.org/devel/contributing.html
Access newly opened database from another transaction
Sounds like an oddball case. Applications should open all their DBIs from a single thread and not start any other threads/transactions until all setup is completed.
Hope it is useful!
Thanks.
-- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/