gpt4 book ai didi

mongodb - 计数提高性能

转载 作者:可可西里 更新时间:2023-11-01 09:54:39 24 4
gpt4 key购买 nike

我研究了mongodb的性能。我收集了 5 亿份文件。我创建了两个索引:

db.appels.createIndex({OPERATEUR_RECEVEUR:1});
db.appels.createIndex({DUREE_APPEL:1});

算上一个字段,速度很快:

15 秒:

db.appels.find ( {  "DUREE_APPEL" : { "$gt" : 42 } }).count();

2 秒:

 db.appels.find({OPERATEUR_RECEVEUR:"MTN"}).count();

但是用“and”计算两个字段,速度很慢:

7 分钟:

db.appels.find ( { $and : [ {  "DUREE_APPEL" : { "$gt" : 42 } }, {OPERATEUR_RECEVEUR:"MTN"} ] } ).count();

(这是没有字段索引的同时)

最后,用“或”计数两个字段是不可能的:

15 小时并终止查询:

db.appels.find ( { $or : [ {  "DUREE_APPEL" : { "$gt" : 42 } }, {OPERATEUR_RECEVEUR:"MTN"} ] } ).count();

我不能使用多索引,因为我有 100 列。我将 1 个节点与 debian 8、2 个 SSD、80 Go Ram、12 个 Cpu、mongodb 2.4 一起使用。我怎样才能提高速度?

最佳答案

我发现是“计数”慢,没研究。在相同的字段上,响应时间与结果数量成正比

"DUREE_APPEL": { "$gt": 42 } --> 198 757 639 条记录 --> 32 秒

"DUREE_APPEL": { "$gt": 800 } --> 11 479 097 条记录 --> 1.9 秒

"DUREE_APPEL": { "$gt": 5000 } --> 833 961 条记录 --> 0.14 秒

索引不是唯一的解决办法,如何解决这个问题?

使用分片(10 个节点的 5000 万行)是否可以作为解决方案? : https://docs.mongodb.com/manual/sharding/

皮埃尔

关于mongodb - 计数提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37447196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com