作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Berkeley DB 和一个可能相对较大的数据库文件(2.1 GiB,使用 btree 格式以防万一)。在应用程序关闭期间,调用 DbEnv::lsn_reset 以便在退出应用程序之前“刷新”所有内容。对于大型数据库,这个例程对我来说需要很长时间——至少 10 分钟左右,在此期间会发生大量磁盘访问。
这是正常现象还是以某种错误方式使用 Berkeley DB 的结果?有什么办法可以加快处理速度吗?特别是,可以调整哪些参数来提高性能?
最佳答案
DbEnv::lsn_reset() 可能不是您想要的。该函数重写数据库中的每一页,以便您可以关闭数据库并在不同的环境中打开它们。它将至少写出 2.1 GiB,而且速度非常慢。
如果您只是关闭应用程序以便稍后重新启动,您可能只想执行 DbEnv::txn_checkpoint() 来刷新数据库日志并插入检查点记录。不过,这也不是必需的。只要您将日志提交到稳定存储,您就可以简单地退出您的应用程序。
http://docs.oracle.com/cd/E17276_01/html/api_reference/CXX/txncheckpoint.html
关于c++ - Berkeley DB:DbEnv::lsn_reset 需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23458063/
我正在使用 Berkeley DB 和一个可能相对较大的数据库文件(2.1 GiB,使用 btree 格式以防万一)。在应用程序关闭期间,调用 DbEnv::lsn_reset 以便在退出应用程序之前
我是一名优秀的程序员,十分优秀!