关于MongoDB缓存数据的一些困惑
使用mlogfilter查看索引使用效率不高的MongoDB查询语句 如下所示
2017-10-28T06:40:08.791+0000 I COMMAND [conn4431] command foo.data_02 command: find { find: "data_02", filter: { $and: [ ... ] }, projection: { ...}, limit: 50, shardVersion: [ Timestamp 0|0, ObjectId('000000000000000000000000') ] } planSummary: IXSCAN { field1: -1.0, field2: -1.0 } keysExamined:589735 docsExamined:589735 cursorExhausted:1 keyUpdates:0 writeConflicts:0 numYields:4610 nreturned:0 reslen:217 locks:{ Global: { acquireCount: { r: 9222 } }, Database: { acquireCount: { r: 4611 } }, Collection: { acquireCount: { r: 4611 } } } protocol:op_command 8785ms
扫描了58万多条记录,却返回了0条 我想知道像这种情况MongoDB到底是怎么缓存数据的呢?
即只缓存返回结果(0) 还是所有扫描的记录呢(589735)。从内存的角度来说的话, 是返回结果越少内存占用越小 还是 扫描记录越少 内存占用越小?
- WiredTiger internal cache
- filesystem cache
这两个缓存是怎么分配的呢?
- 是internal cache 满了再用filesystem cache呢?
- 还是同时都有分配呢? 那么这种情况下 什么数据进internal cache 什么数据进filesystem cache呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
扫描记录少占用的内存肯定少
返回结果越少内存占用越少,这个不太肯定。