有什么区别 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...
据我所知,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...