【问题标题】:MongoDB capped collection performanceMongoDB 限制收集性能
【发布时间】:2017-10-29 21:37:57
【问题描述】:

我最近正在研究一个时间序列数据项目来存储一些传感器数据。为了实现最大的插入/写入吞吐量,我使用了 capped collection(根据 mongodb 文档 capped collection 将提高读/写性能)。当我使用 python 驱动程序测试集合以插入/写入数千个文档/记录时,没有索引的上限集合与正常集合相比,我看不出上限集合的写入性能与正常集合相比有多大差异。示例就像我使用 pymongo 驱动程序在单线程上插入 40K 记录。封顶收集大约需要 25.4 秒,正常收集需要 25.7 秒。

谁能解释一下我们什么时候可以达到上限集合的最大插入/写入吞吐量?这是时间序列数据收集的正确选择吗?

【问题讨论】:

  • 上限集合的性能保持不变/稳定,无论您“插入”多少数据。并且常规集合的性能会随着集合的大小而降低。
  • 此外,按照今天的标准,40k 个文档什么都不是。 (除非你的硬件真的很弱)。尝试在每个文件中编写数十亿个文档。你会看到区别。
  • 嗨,塞尔吉奥,我已经在上限收集上运行了百万条记录插入。我看不到比正常收集有任何改进。我的驱动程序对插入率的提高也很重要吗?我目前正在使用具有 32 个线程的 8 核机器。这种硬件配置还不足以让上限集合提供性能反弹?
  • 嗨,塞尔吉奥,您有任何疑问
  • 显然这还不够,是的。尝试插入几亿。

标签: mongodb mongodb-query aggregation-framework pymongo capped-collections


【解决方案1】:

存储到上限集合中的数据会在超过上限集合的固定大小时进行轮换。 Capped collections 不需要任何索引,因为它们保留了插入顺序,并且按照与数据库引用磁盘上文档的顺序相同的自然顺序检索数据。因此,它在插入和数据检索过程中提供了高性能。

有关 Capped 集合的更详细说明,请参阅 URL 中提到的文档

https://docs.mongodb.com/manual/core/capped-collections/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多