我知道在MongoDB和SQL DB之间进行基准测试时需要考虑很多问题,但我只是想了解在我的设置中使用的正确查询。
示例中,SQL中的SELECT * FROM table
等效于MongoDB中的db.collection.find()
。
在计算每个查询所花费的总时间时,我必须分别遍历SQL ResultSet和MongoDB Cursor,否则只执行查询就足够了。下面是我的示例迭代步骤。
ResultSet rs = statement.executeQuery(queryString);
time = getTime()
while (rs.next()) {}
time1 = getTime()
total = time1-time;
我的理解是,如果我不迭代MongoDB中的Cursor,那么这不仅会返回处理第一批结果所需的时间,即20个文档而不是所有匹配的文档吗?
答案 0 :(得分:0)
我的理解是,如果我不迭代MongoDB中的Cursor,那么这不仅会返回处理第一批或结果所需的时间,即20个文档而不是所有匹配的文档吗?
您只获得第一批,因为mongo shell可以帮助您这样做。游标实际上不会获取任何内容,它只是立即返回。所以是的,你必须迭代mongo游标,或者调用toArray()
将所有这些游戏作为Array
。
您可能还想考虑normalize
和denormalize
如何影响您的查询。因为您也受益于denormalized
数据模式。使用denormalized
架构,您不需要JOIN
强制硬盘驱动器扫描不同的磁盘集群。加入两条记录也没有加入。但是denormalize
并不总是一个选项。因此,只有在有实际场景时才有意义,针对该场景构建查询并对这些查询进行基准测试。