【发布时间】:2012-09-06 12:01:52
【问题描述】:
我正在开发一个使用 Berkeley Db 的应用程序。它必须符合 ACI(但不是 ACID),性能非常重要。不仅如此,性能是我选择 Berkeley Db 的原因。但现在 Berkeley Db 似乎因为日志记录而成为瓶颈。问题是数据库中存储的数据越多,要存储的值就越长。 我做
envp->set_flags(envp, DB_TXN_NOSYNC, 1);
然后用flags打开环境:
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。
有没有办法关闭日志或禁止将日志写入磁盘?
编辑:由于没有人回答,我搜索了很多并找到了 way 来关闭日志记录,但不幸的是,它没有帮助 - 环境仍然向 __db.00x 文件写入很多内容,而我没有不知道为什么以及如何让它在内存中。
【问题讨论】:
标签: performance logging transactions berkeley-db