簡體   English   中英

內存數據庫和磁盤內存數據庫之間的區別

[英]Difference between In memory databases and disk memory database

最近我聽說過內存數據庫的概念。

在任何類型的數據庫中,我們最終將數據存儲在計算機中,從那里我們的程序將獲得數據。與其他數據庫相比,內存數據庫操作如何快速。

內存數據庫是否會將數據庫中的所有數據加載到內存(RAM)中。

提前致謝....

內存數據庫(IMDB;也是主內存數據庫系統或MMDB或內存駐留數據庫)是一種數據庫管理系統,主要依賴主存儲器進行計算機數據存儲。 它與采用磁盤存儲機制的數據庫管理系統形成對比。 主內存數據庫比磁盤優化數據庫更快,因為內部優化算法更簡單並且執行更少的CPU指令。 訪問內存中的數據消除了查詢數據時的查找時間,從而提供比磁盤更快,更可預測的性能。

響應時間至關重要的應用程序(例如運行電信網絡設備和移動廣告網絡的應用程序)通常使用主存儲器數據庫。

在回復您的查詢時,是的,它會將數據加載到您計算機的RAM中。

磁盤數據庫

  • 存儲在磁盤上的所有數據,磁盤I / O需要時將數據移動到主存儲器中。

  • 數據始終保留在磁盤上。

  • 傳統的數據結構,如B-Trees,旨在有效地在磁盤上存儲表和索引。

  • 幾乎無限的數據庫大小。

  • 支持非常廣泛的工作負載,即OLTP,數據倉庫,混合工作負載等。

內存數據庫

  • 所有數據都存儲在主存儲器中,無需執行磁盤I / O來查詢或更新數據。

  • 數據是持久性的或易變的,具體取決於內存數據庫產品。

  • 專用數據結構和索引結構假設數據始終在主存儲器中。

  • 針對專業工作負載進行了優化; 即通信行業特定的HLR / HSS工作負載。

  • 數據庫大小受主內存量的限制。

MySQL產品

MySQL有幾個“引擎”。 在所有引擎中,操作都在RAM中執行。 引擎在確保數據“持久”存儲在磁盤上的能力差異很大。

ENGINE = MEMORY - 這不是持久的; 數據僅在RAM中找到。 它僅限於某些預設的最大尺寸。 電源故障時,所有數據(在MEMORY表中)都會丟失。

ENGINE = MyISAM - 這是一個舊引擎; 它將數據保存到磁盤,但在電源故障的情況下,有時索引已損壞並需要“修復”。

ENGINE = InnoDB - 這是首選引擎。 它不僅堅持磁盤,而且即使在電源故障時也能“保證”一致性。

內存中的數據庫通常在內存中包含整個數據庫。 (比如MySQL數據庫引擎MEMORY)這是一個巨大的性能提升,但RAM很昂貴而且通常不會持久,所以你會在重啟時丟失數據。 有一些方法可以減少上一個問題,例如通過定時快照或磁盤數據庫上的復制。 還有一些混合類型,只有內存中的一部分db。

還有像Tarantool這樣的內存數據庫可以處理大於可用RAM的數據集。 Tarantool能夠使用這些集合,因為它針對快速隨機寫入進行了優化,這是出現的主要瓶頸。

暫無
暫無

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

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