伯克利数据库环境问题

Posted

技术标签:

【中文标题】伯克利数据库环境问题【英文标题】:Berkeley DB Environment issues 【发布时间】:2014-06-09 23:17:28 【问题描述】:

所以我们使用的是 Berkeley DB,而我们的 API 使用的是 BDB C++ API。我们最近在我们的数据库中添加了一些新索引。添加新索引后,我们需要迁移所有旧数据以在旧记录上添加新索引,从那时起,每当我们启动写入数据库的进程时,都会收到以下警告:

BDB2058 警告:加入环境时忽略 DB_SET_LOCK_TIMEOUT。 BDB2059 警告:加入环境时忽略 DB_SET_TXN_TIMEOUT。

如果我的理解正确,我们现在会降低死锁的风险,因为它“忽略”了我们设置的超时。尝试随机写入数据库时​​,我也看到进程挂起。解决它的唯一方法是立即重新启动该过程。我的问题是,是否有人知道会导致这些警告的原因,或者我可以如何调试环境实例化以找出答案?任何帮助或建议将不胜感激。

【问题讨论】:

【参考方案1】:

超时可能是 dbenv 环境的持久全局属性,而不是 dbenv 的每个使用实例的属性。

您可以尝试在数据库上运行 db_recover 以删除 __db.NNN 文件。

否则,您可能有多个进程共享一个 dbenv,并且警告表明后面的进程正在尝试更改已设置的属性。

【讨论】:

以上是关于伯克利数据库环境问题的主要内容,如果未能解决你的问题,请参考以下文章

markdown 克利翁使用泊坞窗作为开发环境

__db.001 在伯克利数据库中是啥意思?

清理 Berkeley DB 日志文件

伯克利 DB SIGBUS 错误

伯克利:模块化神经网络学习复杂推理(论文下载)

Egret 学习之简介,环境搭建及命令行语法