Database-Recommendation

是否有可用的記憶體混合數據庫?

  • December 6, 2018

我正在尋找一個數據庫——

  • 關係(不是 NoSQL)。
  • 有一個記憶體儲存。
  • 具有基於磁碟的備份儲存。

我想建立一個系統,將磁碟的全部內容複製到記憶體中。因此,對記憶體儲存和磁碟都進行了寫入,但僅對記憶體進行了讀取。

我見過的大多數數據庫,例如 H2 或 HSQLDB 都在記憶體網格或基於磁碟的表中提供。我正在尋找帶有基於磁碟的備份儲存的記憶體網格。

是否有這樣的數據庫系統可用,或者是否可以配置 MySQL(或其他)數據庫以這種方式工作?

即使您使用“持久”表,H2和 HSQLDB 也會將表記憶體在記憶體中。

SET FILES CACHE SIZE在 HSQLDB 中,您可以使用語句控制用於保存表數據的記憶體量。我認為H2有類似的東西。

因此,如果您創建記憶體表並使數據記憶體足夠大,您最終會得到儲存在磁碟上但保存在記憶體中的表。

好吧,如果您的數據庫足夠小以適合記憶體,大多數關係數據庫將滿足這些需求。大多數都有用於頻繁訪問數據的緩衝池。這是一種常見的策略。我知道PostgreSQL通常會這樣做,儘管它會將頁面從記憶體刷新到磁碟並寫入 WAL。因此,如果您的數據庫在記憶體中非常適合,那麼所有這些都可以通過這種方式進行管理。PostgreSQL 使用 2Q 記憶體算法和 OS 文件系統緩衝區作為第三層(寫入事務日誌在每次送出時刷新,雖然確保了持久性,但表不是)。

不過,最大的問題是這確實會帶來一些成本。您將獲得良好 RDBMS 的標準性能。以磁碟格式管理事物也有一些懲罰。所以你不會得到像 VoltDB 這樣的磁碟支持儲存。由於主記憶體格式和基於磁碟的格式之間的轉換問題,這樣的事情不存在。

引用自:https://dba.stackexchange.com/questions/21379