我正在运行一个查询,使用聚合打印大约300个结果。
在Robo3t/Mongo shell中执行查询非常快,但在NodeJS中使用mongoose执行查询时非常慢。
尝试寻找答案,登陆到这个链接,尝试设置dbquery.shellbatchsize=500000;
,但是两个查询的差异仍然是7-8秒
db.getCollection('fixed_activities').aggregate([
{
$lookup: {
from: "city",
localField: "activity_city",
foreignField: "_id",
as: "activity_location"
}
},
{
$lookup: {
from: "rate_sheet_activity_prices",
localField: "_id",
foreignField: "act_id",
as: "rate_sheets"
}
},
{
$lookup: {
from: "organizations",
localField: "rate_sheets.rate_sheet_id",
foreignField: "rate_sheets.rate_sheet_id",
as: "org_id"
}
},
{
$lookup: {
from: "images",
localField: "activity_image",
foreignField: "_id",
as: "activity_image"
}
},
{ $match: { org_id: { $exists: true, $not: { $size: 0 } } } }
])
我也遇到了同样的问题,我的解决方案是从mongoose切换到NodeJS中的本地mongodb控制器。
https://mongodb.github.io/node-mongodb-native/3.3/installation-guide/installation-guide/
更新:为了更明显地说明我正在努力做的事情:我将拥有5000万以上的设备流媒体音频。流平均为100KB,峰值流量时为200K流/分钟。我正在寻找一种存储解决方案来满足这种需求。我一直在研究Bookkeeper、Kafka、Ignite、Cassandra和Redis。到目前为止,我只对redis和ignite进行了基准测试,但我很惊讶ignite这么慢。
JavaScript 有两种方式判断两个值是否相等。 等于操作符 等于操作符由两个等号组成:== JavaScript 是弱类型语言,这就意味着,等于操作符会为了比较两个值而进行强制类型转换。 "" == "0" // false 0 == "" // true 0 == "0"
问题内容: 我试图找出如果将主键更改为BIGINT(20)时表的性能是否会下降。目前,我正在使用INT(7),并且已经有大约 300.000个条目具有大ID(7或8位数字) 。我已经搜索了很多东西,但只发现它使用了更多的磁盘空间(这很明显)。 我所有的ID现在都有7位数字,但是我的客户希望更改为8位数字。将来我将无法轻松更改软件,因此我考虑现在使用BIGINT(20)以防万一。即使我不需要使用BI
这个问题之后的讨论让我感到疑惑,所以我决定运行一些测试,比较和在Python中创建集合的创建时间(我使用的是Python3.7)。 我比较了使用和的两种方法。这两项结果均与以下结果一致*: 结果:0.30240735499999993 所以第二种方法几乎比第一种方法快3倍。这对我来说是一个很大的差别。通过这种方式优化set文字相对于方法的性能,究竟是怎么回事?在哪些情况下,哪一个是可取的? *注意
一般来说,原生系统比docker容器快多少?