在C#Web应用程序中查询MongoDB要比C#console应用程序慢得多,为什么?

时间:2016-11-17 11:57:07

标签: c# mongodb

我目前正致力于一个我们必须提高性能的项目,因此已经从检索关系数据库中的数据和计算数字,预先计算数字并将它们存储在mongodb文档中。

但是现在当我们进行速度测试时,我们可以看到应用程序并不快。从关系数据库检索数据并计算数字时的查询时间约为0.8秒。而从mongodb中检索预先计算的数据平均需要2.5秒。

因此我们尝试使用控制台应用程序进行测试,我们可以看到对mongodb的相同查询平均只需要40毫秒。

什么会导致查询时间的巨大差异?

我们在Web应用程序和控制台应用程序中使用相同的MongoDB驱动程序v.2.3。它们都连接到同一个集合并搜索相同的项目。

为了测量时间,我们使用c#System.Diagnostics.Stopwatch

这是用于查询的函数

public BsonDocument findByProp(ObjectId id)
    {
        var filter = Builders<BsonDocument>.Filter.Eq("_id", id);
        var collection = getCollection("collection").Find(filter);

        return collection.First();
    }

这是如何调用和测量的

Stopwatch sw = new Stopwatch();

        sw.Start();
        var club = m.findByProp(new MongoDB.Bson.ObjectId("5823327fc3a41f31d849cf3b"));
        sw.Stop();

        var elapsedTime = sw.ElapsedMilliseconds;

Web应用程序和控制台测试在连接到同一个云服务器的localhost上运行。经过的时间是在100次连续测试中计算的平均值。所以这也应该考虑到任何缓存

0 个答案:

没有答案