如果一个工作集超出 MongoDB 中的内存会怎样?
What happens if one working set exceeds memory in MongDB?
我知道每次 mongoDB 中的 运行 查询都会缓存工作集。
当我知道上一页上的数据已被删除并缓存时,如果一个工作集超出缓存内存会怎样?
例如)
缓存大小GB:0.5g,
关于查询的总文档大小:1g
使用 project 命令减小正在缓存的文档的大小是否有帮助?
缓存由WiredTiger管理,mongod会请求它需要的文档,如果WT在缓存中没有找到,它会从磁盘中读取。如果这使得缓存超过阈值(默认为最大大小的 80%),后台驱逐工作人员将开始从缓存中删除最近最少使用的项目。
结果集在堆内存中 constructed/sorted,而不是缓存。如果您的结果集太大,mongod 可以在排序时使用磁盘临时 space。
大的结果也可能导致操作系统使用 swap,在极端情况下它可能 运行 内存不足并被 OOM 杀手杀死。
我知道每次 mongoDB 中的 运行 查询都会缓存工作集。
当我知道上一页上的数据已被删除并缓存时,如果一个工作集超出缓存内存会怎样?
例如) 缓存大小GB:0.5g, 关于查询的总文档大小:1g
使用 project 命令减小正在缓存的文档的大小是否有帮助?
缓存由WiredTiger管理,mongod会请求它需要的文档,如果WT在缓存中没有找到,它会从磁盘中读取。如果这使得缓存超过阈值(默认为最大大小的 80%),后台驱逐工作人员将开始从缓存中删除最近最少使用的项目。
结果集在堆内存中 constructed/sorted,而不是缓存。如果您的结果集太大,mongod 可以在排序时使用磁盘临时 space。
大的结果也可能导致操作系统使用 swap,在极端情况下它可能 运行 内存不足并被 OOM 杀手杀死。