Berkeley DBの設定を調整して、キャッシュメモリーを有効化または増加できるかもしれない。
ダウンロード中にACIDのどのプロパティが必要だろうか?
BDBレコードの追加はチェックポイントを発行するまで単にログファイルへの追記だ。チェックポイントがメインデータベースファイルを更新する。
通常のBDBトランザクションでは、トランザクションのコミットが成功する前に各ログレコードがディスクに同期されることが保証される。これは非常に厳密だが、完全なACIDには必要だ。DB_TXN_NOSYNCを有効にしても多くが得られる。
「データベースの整合性は維持されるが、アプリケーションやシステムに障害が発生した場合、
最近コミットされた一部のトランザクションがリカバリー時に取り消される可能性がある」
Bitcoinは最近の取引が取り消されても明らかにリカバリできるので、初期ブロックダウンロードの100%でこのフラグを設定するのが有用だと思われる。
チェックポイントについては、チェックポイント時に実行される作業量——ログからデータベースファイルにコピーする必要があるレコード数——と実時間のバランスだ。いくつかの値を試して何が「適切」に感じるか見るしかない——おそらく10,000ブロックごとにチェックポイント?