有什么区别 MongoDB wiredTiger 缓存与内存数据库

What is difference MongoDB wiredTiger cache with in-memory DB

据我所知,MonogoDB 缓存工作集在 RAM 中。

然后,如果我将 wiredTigerCacheSizeGB 增加到与磁盘中所有数据一样多,它的工作速度是否与内存数据库一样快?

如果不是,有什么区别?

我无法回答你所有的问题。

A cache 从磁盘读取数据并将其保存在 RAM 中。当您再次访问此类数据时,您会从 RAM 中读取它,而不是再次从磁盘中读取它——这会慢得多。

因此,如果您只需要读取一次数据,那么缓存是无用的。有些应用会预测你以后可能读取到的数据,提前放入缓存。

MongoDB 内存数据库仅将 所有 数据放入 RAM,它不会从磁盘读取或写入任何内容,除了一些日志数据。当您停止内存中的 MongoDB 进程时,所有数据都会丢失。

wiredTiger 存储引擎是 MongoDB 用来在磁盘上持久存储数据的一种数据格式。

如果您将 wiredTigerCacheSizeGB 设置得足够高以容纳您的所有数据,那么您的所有读取都将从缓存中得到满足。写入将更新缓存并写入存储。

如果您使用内存配置,那么您的所有读取都将从内存中得到满足。写入只会进入内存,不会存储在磁盘上。

因此,如果您的工作负载主要是读取,那么大型缓存的行为类似于内存数据库。如果你的工作负载有很多写入,那么大缓存配置可能会比较慢,因为它需要写入磁盘。

此外,内存数据库在发生崩溃时不会保留您的数据,因为它只在内存中保存数据。

In-Memory Storage Engine and WiredTiger Storage Engine

(In-memory) By avoiding disk I/O, the in-memory storage engine allows for more predictable latency of database operations.

请记住,设置 wiredTigerCacheSizeGB 时您的存储空间限制为 10000 GB。您还应该禁用日志并将 storage.syncPeriodSecs 设置为 0 以提高 WiredTiger 的性能。但是,WiredTiger 仍然必须至少创建 WiredTiger.wt 和 WiredTiger.turtle...

PS。 I think this link might answer your question