【发布时间】:2016-05-08 20:37:51
【问题描述】:
最近我注意到执行多个 upsert(通过 bulk operations)与插入(多个文档)之间存在巨大的性能差异。我想知道我是否正确:
- Upsert/Updates 将类似于
find()和update(),因此它读取和写入 2 件事 - Insert 只会写入,因此速度会快很多
因此性能差异?
如果是这种情况,我想知道我是否需要定期进行大量写入,而不是更新文档,而是编写一个带有createdOn 字段的新文档。然后查询,我只查询文档,按createdOn DESC排序。我想知道这是不是一个好方法?或者,还有更好的方法?
- 我想知道我的收藏是否有索引,它会加快更新速度吗?但是这个索引不会减慢写入部分的速度吗?
- 使用第二种方式,我只做插入,它会变慢然后我有太多的文档吗?是否实用(加快写入速度)?
- 我也尝试增加连接池大小。不知道什么是最佳的,但我尝试了 20 个,我发现我可以通过 mongostat 每秒处理大约 20 个查询。我预计它会更高。
【问题讨论】:
-
一般来说,索引只是为了加快读取速度。不写。
-
=> 每次创建不同的文档:这将是一个很好的解决方案,具体取决于您添加文档的频率。如果文档数量在很短的时间内会变得很大,那么您的查找查询将会变慢。我不会使用这个 bcos 我在每个查询中都有订单文档......即使我必须得到一个文档。
标签: mongodb mongodb-query upsert