2
我想在leveldb的一段时间内使用相同的迭代器。一旦我创建了一个迭代器,如果有来自另一个线程的更改,那么leveldb迭代器会提供这些更改吗?或者我必须创建另一个迭代器?迭代器是否持续提供LevelDB中基础数据的当前视图?
我想在leveldb的一段时间内使用相同的迭代器。一旦我创建了一个迭代器,如果有来自另一个线程的更改,那么leveldb迭代器会提供这些更改吗?或者我必须创建另一个迭代器?迭代器是否持续提供LevelDB中基础数据的当前视图?
现有的leveldb迭代器将而不是反映这些更改。迭代器在创建迭代器时获取数据库的快照。
这在最近的线程就高达性LevelDB邮件列表:https://groups.google.com/forum/#!topic/leveldb/nT2BZ6gKAEc
+1我会假设它是不是除非产品体系,使现场或连续查询。 – 2014-09-01 16:42:59
根据我的经验,LevelDB擅长反映最近的变化,即使它们还没有被提交到磁盘。但是当我们谈论线程时,我们谈论的是一堆蠕虫,就像一般情况那样,在两个线程执行时很难或根本无法确切知道。这不是LevelDB的问题,这是线程的问题。接近你的问题,当你创建一个迭代器时,它肯定不会读入整个数据库,并且在那个时间点继续处理状态。 – flow 2014-09-02 11:21:48