我使用compose:
mongodb:
image: mongo:4
ports:
- "27017:27017"
restart: always
command: --wiredTigerCacheSizeGB=10
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGODB_USER}
MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_USER_PASS}
volumes:
- ${MONGODB_DATADIR}:/data/db
MONGODB_DATADIR
{
"ns" : "domains.domains",
"size" : 5679596048.0,
"count" : 38396115,
"avgObjSize" : 147,
"storageSize" : 1884860416.0,
"capped" : false,
"wiredTiger" : {
...
},
"nindexes" : 7,
"totalIndexSize" : 2701312000.0,
"indexSizes" : {
"_id_" : 387567616,
"URL_1" : 1452449792.0,
"checkedBySEO_1" : 187138048,
"checkedByUclassify_1" : 184221696,
"is_alive_1" : 184528896,
"SEO_in_batch_1" : 176033792,
"uclassify_in_batch_1" : 129372160
},
"ok" : 1.0
}
如您所见,我的集合中有几个索引。我要做的就是使用索引通过简单的查询来计算文档数量。像这样的:
db.getCollection('domains').find({"checkedByUclassify":false}).count();
. 要花10多秒。MongoDB 100%使用一个处理器,不使用它能够使用的内存:
考虑到所有索引的总和约为2.7Gb,我不明白为什么MongoDB不能在需要的时候直接上传到RAM。在这种情况下这是正常的行为吗?有什么方法可以提高性能吗?谢谢。