gpt4 book ai didi

node.js - findOne 查询性能缓慢

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:56 25 4
gpt4 key购买 nike

单个 findOne 查询的性能异常缓慢(最多 60-85 毫秒)。下面的设计有什么根本性的错误吗?我应该采取哪些步骤来加快此操作?

目标(在 10-20 毫秒内快速计数一定范围内的项目):

  • 输入最长时间和最短时间
  • 在数据库中查询最大和最小时间最接近的文档
  • 返回两个查询结果的“number”字段
  • 取“number”字段的差值来获取文档计数

设置

MongoDB 数据库

3000 documents, compound ascending index on time_axis, latency_axis, number field

[   {   time_axis:1397888153982,latency_axis:5679,number:1},    
{ time_axis:1397888156339,latency_axis:89 ,number:2},

...
{ time_axis:1398036817121,latency_axis:122407,number:2999},
{ time_axis:1398036817122,latency_axis:7149560,number:3000} ]

NodeJs

exports.getCount = function (uri, collection_name, min, max, callback) {
var low, high;
var start = now();
MongoClient.connect(uri, function(err, db) {
if(err) {
return callback(err, null);
}
var collection = db.collection(collection_name);
async.parallel([
function findLow(callback){
var query = {time_axis : { $gte : min}};
var projection = { _id: 0, number: 1};
collection.findOne( query, projection, function(err, result) {
low = result.number;
console.log("min query time: "+(now()-start));
callback();
});
},
function findHigh(callback){
var query = {time_axis : { $gte : max}};
var projection = { _id: 0, number: 1};
collection.findOne( query, projection, function(err, result) {
high = result.number;
console.log("max query time: "+(now()-start));
callback();
});
}
],
function calculateCount ( err ){
var count = high - low;
db.close();
console.log("total query time: "+(now()-start));
callback(null, count);
});
});
}

注意:感谢 Adio 的回答。事实证明,mongodb 连接只需要初始化一次并自动处理连接池。 :)

最佳答案

查看您的源代码,我可以看到您每次查询 MongoDB 时都会创建一个新连接。尝试提供已创建的连接,从而重用您创建的连接。来自 Java 世界,我认为你应该创建一些连接池。

您还可以查看此 question及其答案。

" You open do MongoClient.connect once when your app boots up and reuse the db object. It's not a singleton connection pool each .connect creates a new connection pool. " 

关于node.js - findOne 查询性能缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24925479/

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