我正在运行一个在mongo集合上运行的工具,其中包含7,766,558个文档。
{
"_id" : ObjectId("53f602685a38d0bf5e8c6df1"),
"ids" : "5667",
"h" : [
{
"s" : "Briefly, 36 h following transfection, the cells were harvested and lysed in 500 µL HTE buffer containing calcium or calcium chelating reagents according to the experimental condition (150 mM NaCl, 20 mM HEPES (pH 7.4), 50 mM NaF, 1 mM Na3VO4, 1% Triton X-100 and 5 mM EDTA + 5 mM EGTA or 100 µM CaCl2 and complete protease inhibitor cocktail (Roche Applied Science)).",
"p" : "roche"
}
],
"ct" : 1445951888.0000000000000000
}
查询的作用是过滤"ids"
(供应商ID)和"ct"
(创建日期)>上的文档。 [给定日期]然后在" h.s"上运行mongo正则表达式匹配。此作业的三个实例在给定时间内在3个线程上运行,每个线程处理差异供应商。在这些线程的开头,所有3个都非常快速地运行它们的查询。但是它们运行的时间越长(大约在12小时左右),查询往往会越来越慢。
我正在运行的查询是
db.collection.find({'ids':4296, 'ct':{"$gte":1455062400}, 'h.s':{ '$regex': "/[^a-zA-Z]" . $catalogId . "[^0-9a-zA-Z]/i" }})
解决方案不会抛出任何错误。我面临的问题是查询所执行的时间会根据时间大幅下降。如果该工具在启动时每秒查询10次。经过10-12小时后,每秒只有5次左右。
我可以做任何有关性能更新的想法吗?
谢谢