gpt4 book ai didi

mysql - MongoDB vs MySQL 性能 - 简单查询

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:57 28 4
gpt4 key购买 nike

我正在对 mongodb 与 mysql 进行比较,并将 mysql 数据导入 mongodb 集合(>500000 条记录)。该集合看起来像这样:

{
"_id" : ObjectId(""),
"idSequence" : ,
"TestNumber" : ,
"TestName" : "",
"S1" : ,
"S2" : ,
"Slottxt" : "",
"DUT" : ,
"DUTtxt" : "",
"DUTver" : "",
"Voltage" : ,
"Temperature" : ,
"Rate" : ,
"ParamX" : "",
"ParamY" : "",
"Result" : ,
"TimeStart" : new Date(""),
"TimeStop" : new Date(""),
"Operator" : "",
"ErrorNumber" : ,
"ErrorText" : "",
"Comments" : "",
"Pos" : ,
"SVNURL" : "",
"SVNRev" : ,
"Valid" :
}

比较查询时(均返回 15 条记录):

mysql -> SELECT TestNumber FROM db WHERE Valid=0 AND DUT=68 GROUP BY TestNumber

mongodb -> db.results.distinct("TestNumber", {Valid:0, DUT:68}).sort()

结果是相同的,但 mongodb 需要 (iro) 17 秒,而 mysql 需要 0.03 秒。

我明白很难在两个数据库架构之间进行比较,我进一步赞赏 mongodb 管理员的技能之一是相应地组织数据结构(因此仅导入 mysql 结构是不公平的测试) 引用:MySQL vs MongoDB 1000 reads

但返回差异的时间太大而不能成为调整问题。我的(默认)mongodb 日志文件显示:

Wed Mar 05 04:56:36.415 [conn4089] command NTV_Results.$cmd command: { distinct: "results", key: "TestNumber", query: { Valid: 0.0, DUT: 68.0 } } ntoreturn:1 keyUpdates:0 numYields: 6 locks(micros) r:21764672 reslen:250 16525ms

我也试过查询:

db.results.group( {
key: { "TestNumber": 1 },
cond: {"Valid": 0, "DUT": 68 },
reduce: function ( curr, result ) { },
initial: { }
} )

对于类似(17 秒)的结果,是否有关于我做错了什么的线索?这两项服务都在同一台配备 Windows 7 和 16Gb RAM 的八核 i7 3770 台式电脑上运行。

最佳答案

性能低下的原因可能有很多,其中很多原因过于详细,无法在此处详述。但我可以为您提供一个“入门包”。

正在创建 Indexes在您的 ValidDUT 字段上添加将改进这些查询和其他查询的结果。在这种情况下使用 ensureIndex 考虑这种复合形式命令

db.collection.ensureIndex({ "Valid": 1, "DUT": 1})

同样使用aggregate建议用于这些类型的操作:

db.collection.aggregate([
{$match: { "Valid": 0, "DUT": 68 }},
{$group: { _id: "$TestNumber" }}
])

应该等同于您所指的 SQL。

有一个SQL to Aggregation Mapping Chart这可能会给你一些思考的帮助。也值得让自己熟悉其中的区别 aggregation operators以便编写有效的查询。

多年来,我一直在为高级任务编写非常复杂的 SQL。我发现聚合框架为各种问题解决案例带来了新鲜空气。

值得您花时间学习。

同样值得注意。您的“默认”MongoDB 日志文件正在报告这些操作,因为它们被认为是“慢速查询”,然后会“默认”引起您的注意。您还可以根据需要通过调整 database profiler 查看更多或更少的信息。以满足您的需求。

关于mysql - MongoDB vs MySQL 性能 - 简单查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188801/

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