首页 > 解决方案 > MongoDB 5.0 原生时间序列集合上的慢查询

问题描述

我使用 MongoDB 以 1 Hz 的频率存储一些时间序列数据。为了促进这一点,我的中心文档代表每个用户每台设备一小时的数据,在文档创建时预先分配了 3600 个值。两个缺点:

  1. 每个插入都是一个更新。我需要查询正确的记录(按用户、按设备、按天、按小时),将最新的 IoT 读数附加到列表中,然后更新记录。
  2. 分页查询需要复杂的自定义代码。我需要查询与我的搜索范围匹配的所有数据的记录数,然后手动创建要返回的每一页数据。

我希望 5.0 中引入的 MongoDB Native Time-Series Collections 能给我带来一些性能改进,它确实做到了,但仅限于摄取率。我使用的比较是尽快将 108,000 条记录推送到数据库中并平均响应时间,然后执行分页查询并获得响应时间的范围。这是我观察到的:

Mongo 自定义代码解决方案:30 毫秒插入,10-20 毫秒分页查询。

Mongo Native Time-Series:138 微秒插入,50-90 毫秒分页查询。

插入率的差异是预期的,见上面的#1。但是对于分页查询,我没想到我的自定义时间序列 kluge 实现比本机实现快得多。在 Mongo 5.0 文档中,我并没有真正看到对预期优势的讨论。我应该期望看到这方面的改进吗?

标签: mongodbtime-series

解决方案


推荐阅读