A larger cache costs more per transaction, but makes a large number
of operations within a transaction faster. We expect to be dealing
with the latter case here, regardless of the batch_mode parameter
and the database size. 200000 is chosen because it is also used in
join and schemaupgrade, and should be sufficient in most cases.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15795
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Douglas Bagnall <dbagnall@samba.org>
Autobuild-Date(master): Tue Feb 4 22:47:35 UTC 2025 on atb-devel-224
(cherry picked from commit
e705dbbc6765454813375fee9f6a3365b947e021)
Autobuild-User(v4-20-test): Jule Anger <janger@samba.org>
Autobuild-Date(v4-20-test): Wed Feb 26 09:40:17 UTC 2025 on atb-devel-224
options.append("lmdb_env_size:" + str(store_size))
if batch_mode:
options.append("batch_mode:1")
- if batch_mode:
- # Estimate the number of index records in the transaction_index_cache
- # Numbers chosen give the prime 202481 for the default backend size,
- # which works well for a 100,000 user database
- cache_size = int(store_size / 42423) + 1
- options.append("transaction_index_cache_size:" + str(cache_size))
+
+ # For bulk operations like this we use a large transaction index cache.
+ options.append("transaction_index_cache_size:200000")
# Load the database, but don's load the global schema and don't connect
# quite yet