Berkeley Db を使用するアプリケーションを開発しています。ACI (ACID ではなく) に準拠する必要があり、パフォーマンスが非常に重要です。それ以上に、私が Berkeley Db を選んだ理由はパフォーマンスでした。しかし、現在、ロギングのために Berkeley Db がボトルネックになっているようです。問題は、データベースに保存されるデータが多いほど、保存される値が長くなることです。私が作る
envp->set_flags(envp, DB_TXN_NOSYNC, 1);
次に、フラグを使用して環境を開きます。
DB_CREATE | // Create the environment if it does not exist
DB_INIT_TXN | // Initialize the transactional subsystem.
DB_INIT_MPOOL | // Initialize the memory pool (in-memory cache)
DB_INIT_LOCK | // Initialize the locking subsystem
DB_THREAD;
しかし、それはまだディスクにログを記録しており、データ量が増加し、保存される値が長くなるにつれて、パフォーマンスが非常に低下します。おそらく、ほとんどの時間はそれらをログファイルに保存するために費やされます-負荷平均は
load average: 19.65, 19.12, 17.00
実行時にログを同期する必要はありません。必要なのは ACI だけで、ACID は必要ありません。
ログをオフにする方法、またはディスクへのログの書き込みを無効にする方法はありますか?
編集:誰も答えなかったので、私はたくさんグーグルでログをオフにする方法を見つけましたが、残念ながら、それは役に立ちませんでした - 環境はまだ __db.00x ファイルにたくさん書き込みます。インメモリにする方法。