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