【问题标题】:SQL Server Vs MongoDB : Speed test?SQL Server 与 MongoDB:速度测试?
【发布时间】:2011-01-24 11:15:40
【问题描述】:

MongoDB:

var x = nosql.GetRecords<Event>(p => p._Data == "rawhix", 0, 12222);
// ICursor<T> GetRecords<T>(expression, skip, limit);

SQL:

SqlDataReader dr = SqlHelper.ExecuteReader("Select Top(12222)* From NewsFeed WHERE _Data = 'dddd'");

MongoDB 包含 1000000 条与 SQL 中相同的记录。
数据存储如下:

Id = 1 , _Data = 1abc
Id = 2 , _Data = 2bc 
... etc

Event类:

Class Event => int Id => string _Data 

当我运行代码时,结果是:
Mongo : 580ms
SQL:102 毫秒

我应该做些什么来解决这个问题!因为除了这个测试,mongo 总是更快!?!

【问题讨论】:

  • 对于这种简单的查询,您为什么认为 MongoDB 会比 SQL Server 更快?假设您在 _Data 列上有一个适当的索引,我希望任何关系数据库在这种类型的查询中都快如闪电。说真的 - 这种类型的基准证明什么都没有。
  • 这是转发吗?另外,昨天你的结果是“Mongo:172ms SQL:185ms”。 - 这不是同一个问题吗?那么发生了什么变化?
  • 这里我试图寻找一个不存在的结果!!
  • 您可以将 SQL 部分排除在此问题之外,它仍然可以正常工作 - 580 毫秒的简单查询意味着您需要一个索引。
  • 您有一个错误的假设,即 MongoDB 是某种下一代的东西,它将把所有类型的 SQL 服务器都淘汰出局。它不是,它只是一个执行类似的工具,尽管与 SQL 服务器的角色不同。所以,这种测试毫无意义,就像问塞巴斯蒂安·勒布比费尔南多·阿隆索快。

标签: c# sql-server linq performance mongodb


【解决方案1】:

你需要一个索引。在 mongo 控制台中运行:

db.Events.ensureIndex({_Data:1});

或者您可以通过 C# 驱动程序调用它:

MongoDatabase db = server.GetDatabase("your_db_name");
MongoCollection<Event> events = hr.GetCollection<Event>("events");
employees.EnsureIndex("_Data");

您不希望在每次调用时都执行此操作,因为这是对数据库的另一次调用,并且对性能的影响非常小。

【讨论】:

  • 是的,这是在 mongo 控制台中,但是 c# 驱动程序呢!
  • 添加了如何通过 C# 驱动程序执行此操作 - 尽管您只需为每个数据库执行一次此操作,因此我不会每次都调用它。
  • @Rawhi:那么在 ensureIndex() 之后你的统计数据是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
  • 2012-06-25
  • 2018-04-07
  • 1970-01-01
相关资源
最近更新 更多