SN-3688 已核对来源,附原文与上下文。
这是个好优化。下次更新 SVN 时我会加上。
That's a good optimisation. I'll add that next time I update SVN.
更一般地,我们还可以考虑这个:
More generally, we could also consider this:
dbenv.set_lk_max_objects(10000);
dbenv.set_lk_max_objects(10000);
dbenv.set_errfile(fopen(strErrorFile.c_str(), "a")); /// debug
dbenv.set_errfile(fopen(strErrorFile.c_str(), "a")); /// debug
dbenv.set_flags(DB_AUTO_COMMIT, 1);
dbenv.set_flags(DB_AUTO_COMMIT, 1);
+ dbenv.set_flags(DB_TXN_NOSYNC, 1);
+ dbenv.set_flags(DB_TXN_NOSYNC, 1);
ret = dbenv.open(strDataDir.c_str(),
ret = dbenv.open(strDataDir.c_str(),
DB_CREATE |
DB_CREATE |
DB_INIT_LOCK |
DB_INIT_LOCK |
DB_INIT_LOG |
DB_INIT_LOG |
之后我们依赖 CDB::Close() 里的 dbenv.txn_checkpoint(0, 0, 0) 在钱包写入后刷盘。
We would then rely on dbenv.txn_checkpoint(0, 0, 0) in CDB::Close() to flush after wallet writes.