lmdb返回的数据是否在对数据库进行任何更改后失效?

时间:2016-09-06 18:57:49

标签: database lmdb

lmdb(Lightning Memory-Mapped Database)文档提到了关于返回数据有效性的以下内容:

  

从数据库返回的值仅在后续版本中有效   更新操作,或事务结束。不要修改或释放   他们通常指向数据库本身。

我对什么"更新操作"有点困惑。在这种情况下指的是: 做"更新操作"表示对数据库的任何更新操作(例如,更改另一个值,可能来自另一个线程),还是仅对特定值进行更新操作?

1 个答案:

答案 0 :(得分:0)

它可能应该说“......仅在同一事务的后续更新操作或事务结束时才有效。”

如果您持有只读事务,则在您持有事务时,另一个线程无法更改该值,否则将无法保证您可以在另一个线程使该值无效之前成功复制该值。

因此,在打开事务时,该值将保持有效,但不会长时间保持只读事务处于打开状态,因为这会导致数据库在写入时不断增长(删除的空间无法重用)