計算記憶體數據庫的 RAM 需求
一般來說,記憶體數據庫需要多少 RAM?我認為它需要足夠的 RAM 用於:
- 作業系統和通用系統服務,以及
- 數據庫管理系統,更多
- 整個數據庫(與儲存在磁碟上的數量相同),加上
- 臨時數據庫表
- 有些懈怠
考慮到其中最大的組成部分通常是整個數據庫的大小,那麼它需要執行正常磁碟數據庫所需的正常 RAM 大小(例如 16 GB)加上數據庫的磁碟大小(假設一個相當大的數據庫需要 50 GB);在此範例中,至少有 76 GB 以及用於數據庫逐漸增長的空間。
我知道對於不同的 DBMS(例如 SAP Hana 或 Oracle TimesTen),答案會有所不同,但我問的是計算的一般組成部分。
這個分析準確嗎,還是我錯過了計算的一些重要組成部分?
查看這些連結 - 第一個是Michael Stonebraker的VoltDB。他是他所稱的 NewSQL 背後的主要驅動力之一——他相信 OldSQL(即傳統的 RDBMS 系統、您的 Oracle、MySQL 和 SQL Server)正在做大量的緩沖和鎖存等工作。在他的 VoltDB(基於 Java)系統中,事務一直執行到完成,並且不會與其他事務競爭系統資源。
要記住的關鍵是它是一個無共享的記憶體架構。他認為這對 OLTP 有利,但對 OLAP 不利,他提倡柱狀儲存,例如他創立的 Vertica,後來被 HP 收購。
Stonebraker 還認為,NoSQL 犧牲了SQL 和 ACID 來換取性能,這讓孩子們望而卻步。
Microsoft 的 Hekaton 是基於非常相似的想法 ( 1 , 2 ),這並不奇怪,因為有一位 Microsoft 人是 Stronebraker 的一些工作的合著者(目前找不到參考資料)。AFAICS 的主要區別在於 Hekaton 的儲存過程被編譯為本機程式碼。
我給出的參考資料有點模糊和籠統,但第一個微軟連結說你的記憶應該是你的數據的兩倍。AIUI,這條規則不是一成不變的,而是取決於你的應用程序的功能,但它是一個很好的起點:-)。這是一個引人入勝的領域,值得一讀(去年寫了一篇關於它的文章),那裡有很多東西。