查看其它 1 个回答lxue的回答

lxuelxue数据库管理员某互联网公司

您需要的内存大小取决于几个因素,包括但不限于:
· 数据库存储和 working set 之间的关系。
· 操作系统的 LRU 缓存淘汰策略(最近最少使用)
· Journaling 预写日志的影响
· page fault (缺页中断)的数量或速率以及其他 MongoDB Cloud Manager 检测发现何时需要更多的内存
· 每个数据库连接线程最多需要 1 MB 的 RAM 。

从磁盘加载数据到内存时, MongoDB 交给操作系统进行。它只是通过内存映射其所有数据文件,并依赖于操作系统来缓存数据。当内存不足时,操作系统通常会从内存中驱逐最近最少使用的数据。例如,如果客户端访问索引比访问文档更频繁,则索引更可能保留在内存中,但这取决于您的特定用法 。

要计算所需的内存大小,您必须计算 working set 大小或客户最常使用的数据部分。这取决于您的访问模式,您拥有的索引以及文档的大小。由于 MongoDB 每个连接使用一个线程,因此每个数据库连接也需要最多 1 MB 的内存,无论是活动还是空闲 。

如果 page fault 很少发生,那么表示您的 working set 就能放入内存。如果 page fault 数量比较高,则可能会降低性能。对于 SSD 固态硬盘而言,这个影响相比机械磁盘就不那么重要了 。

互联网服务 · 2020-03-11
浏览1588

回答者

lxue
lxue006
数据库管理员某互联网公司
擅长领域: 数据库人工智能大数据

lxue 最近回答过的问题

回答状态

  • 发布时间:2020-03-11
  • 关注会员:3 人
  • 回答浏览:1588
  • X社区推广