Berkeley DB 在没有交易的情况下损坏?

Posted

技术标签:

【中文标题】Berkeley DB 在没有交易的情况下损坏?【英文标题】:Berkeley DB corrupted without transactions? 【发布时间】:2014-06-12 12:09:44 【问题描述】:

如果一个 Berkeley DB 被多个没有事务的并发进程打开写入(并且被写入),那么该 DB 是否可能损坏是真的吗?

【问题讨论】:

您可能想自己在这个问题中展示一些研究成果 - 您怀疑数据库损坏的基础是什么? 【参考方案1】:

我们需要锁定。 (但事务并非绝对必要。)请参阅文档中的http://www.mathematik.uni-ulm.de/help/BerkeleyDB/ref/debug/common.html

症状: 运行多个线程或进程,并且数据库似乎已损坏。

可能的原因: 未启用锁定。

修复: 确保您在访问方法中获得了锁定。您必须将 DB_INIT_LOCK 指定给 DB_EN​​V->open 调用,然后将该环境传递给 DB->open。

【讨论】:

以上是关于Berkeley DB 在没有交易的情况下损坏?的主要内容,如果未能解决你的问题,请参考以下文章

Berkeley DB 无法在不关闭数据库的情况下访问数据

如何在不记录/写入 __db.00x 文件的情况下使用 Berkeley Db 事务?

优化 Berkeley DB 中的 Put 性能

如何在不安装的情况下在应用程序中使用 Berkeley DB

Berkeley-DB:多个数据库上的原子事务

如何修复 Berkeley DB 文件中不正确的 XML 标签