簡體   English   中英

從lmdb返回的數據在對數據庫進行任何更改后是否無效?

[英]is data returned from lmdb invalidated after any change to the database?

lmdb(閃電存儲器映射數據庫)文檔在返回數據的有效性方面提到了以下內容:

從數據庫返回的值僅在后續更新操作或事務結束之前才有效。 不要修改或釋放它們,它們通常指向數據庫本身。

在這種情況下,我對“更新操作”指的是有些困惑:“更新操作”是指對數據庫的任何更新操作(例如,更改另一個值,可能來自另一個線程),還是僅針對特定的更新操作值?

它可能應該說“ ...僅在對同一事務的后續更新操作或事務結束之前才有效”。

如果您持有只讀事務,則另一個線程無法在您持有事務時更改該值,因為否則將無法保證您可以在另一個線程使該值無效之前成功復制該值。

因此,該值在事務打開時將保持有效,但不要長時間保持只讀事務打開,因為它將導致數據庫在寫入時持續增長(無法重復使用刪除操作中的空間)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM