伯克利数据库环境问题
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,并且警告表明后面的进程正在尝试更改已设置的属性。
【讨论】:
以上是关于伯克利数据库环境问题的主要内容,如果未能解决你的问题,请参考以下文章