【问题标题】:What is difference MongoDB wiredTiger cache with in-memory DBMongoDB WiredTiger 缓存与内存数据库有什么区别
【发布时间】:2021-01-23 13:55:00
【问题描述】:

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

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

如果不是,有什么区别?

【问题讨论】:

    标签: mongodb in-memory-database wiredtiger


    【解决方案1】:

    In-Memory Storage EngineWiredTiger Storage Engine

    (内存中)通过避免磁盘 I/O,内存中存储引擎允许更可预测的数据库操作延迟。

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

    PS。 I think this link might answer your question

    【讨论】:

      【解决方案2】:

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

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

      因此,如果您只需要读取一次数据,缓存将毫无用处。一些应用程序会预测您将来可能读取的数据,并提前将其放入缓存中。

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

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

      【讨论】:

      • 如果我增加wiredTigerCacheSize 与总数据大小一样多,它与内存数据库的性能相同吗?
      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-05-30
        • 2017-07-15
        • 2015-12-16
        • 2016-08-29
        • 2017-11-24
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 2013-12-28
        相关资源
        最近更新 更多