如何优化GridDB中大型时序数据集的查询性能?

问题描述 投票:0回答:1

我正在开发一个项目,涉及在 GridDB 中管理大型时间序列数据集。目前,随着数据集大小的增长,我遇到了严重的查询延迟问题。虽然 GridDB 在较小的数据集上表现良好,但随着数据集大小的增加,某些查询变得比预期慢。

有关问题的详细信息

以下是一些有助于了解问题背景的具体细节:

  • 数据集大小:5000万条记录(约200GB数据)。

  • 查询性能:在过滤 1 个月范围内的数据时,我当前的查询需要 10 秒才能执行。理想情况下,我希望在 2 秒内完成。

  • 硬件:运行在16核CPU上,具有32GB RAM和SSD存储。

示例查询

这是我正在使用的查询的示例:

选择AVG(温度),MAX(湿度)

来自传感器数据

“2023-01-01”和“2023-01-31”之间的时间戳

AND 位置 = '仓库-1';

我尝试过的

为了解决性能问题,我尝试了以下步骤:

  1. 索引:在时间戳和位置列上创建索引。

  2. 分区:使用GridDB的容器分区功能按月划分数据。

  3. 资源分配:调整了 GridDB 中查询引擎的内存设置。 尽管做出了这些努力,我还没有看到查询性能有明显的改善。

问题

  1. 是否可以对 GridDB 中的查询或容器配置应用其他优化,以更有效地处理这种规模?

  2. 对于这种大小的数据集,10 秒的查询时间是否正常,还是我在 GridDB 设置中遗漏了某些内容?

任何见解或建议将不胜感激!

indexing time-series query-optimization griddb database-optimization
1个回答
0
投票

您需要在两列上建立基于树的索引,首先是

location
,然后是
timestamp
,以支持这种过滤。

container.create_index(["location", "timestamp"])
© www.soinside.com 2019 - 2024. All rights reserved.