文档文档

优化查询

优化 SQL 和 InfluxQL 查询以提高性能并降低其内存和计算 (CPU) 要求。 了解如何使用可观测性工具来分析查询执行并查看指标。

为什么我的查询很慢?

查询性能取决于时间范围和查询复杂性等因素。 如果查询速度低于预期,请考虑以下潜在原因

  • 查询跨越较大的时间范围,这会增加正在处理的数据量。
  • 查询执行密集型操作,例如
    • 使用 ORDER BY 对大型数据集进行排序或重新排序。
    • 查询许多字符串值,这在计算上可能很昂贵。

提高查询性能的策略

以下设计策略通常可以提高查询性能和资源利用率

仅查询您需要的数据

包含 WHERE 子句

InfluxDB 3 将数据存储在每个分区的 Parquet 文件中。 默认情况下,InfluxDB Clustered 按天对表进行分区,但您也可以自定义分区您的数据。 在查询时,InfluxDB 从对象存储检索文件以响应查询。 为了减少查询需要从对象存储中检索的文件数量,请包含一个WHERE 子句,该子句按时间范围或特定标签值过滤数据。

仅 SELECT 您需要的列

由于 InfluxDB 3 是列式数据库,因此它仅处理查询中选择的列,这可以减轻宽模式对查询性能的影响。

但是,从宽模式检索大量列的非特定查询可能比更具针对性的查询更慢且效率更低——例如,考虑以下查询

  • SELECT time,a,b,c
  • SELECT *

如果表包含 10 列,则两个查询之间的性能差异是最小的。 在包含 1000 多列的表中,SELECT * 查询速度较慢且效率较低。

识别和解决瓶颈

要识别性能瓶颈,请学习如何分析查询计划。 查询计划提供运行时指标,例如扫描的文件数,这可能会揭示查询执行中的低效率。

请求帮助以排查查询问题

某些瓶颈可能是由次优查询执行计划引起的,并且超出您的控制范围——例如

  • 对已排序的数据进行排序 (ORDER BY)。
  • 从对象存储中检索许多小的 Parquet 文件,而不是更少、更大的文件。
  • 查询许多重叠的 Parquet 文件。
  • 执行大量表扫描。

如果您已按照步骤优化排查查询问题,但它仍然不满足性能要求,请参阅如何报告查询性能问题

查询跟踪日志记录

目前,客户无法为 InfluxDB 集群启用跟踪日志记录。 InfluxData 工程师可以使用查询计划和跟踪日志记录来帮助查明查询中的性能瓶颈。

请参阅如何报告查询性能问题


此页内容对您有帮助吗?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。 您可以继续像当前一样使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版现已公开发布 Alpha 版本

InfluxDB 3 开源版现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个作为 Alpha 版本一部分的产品。

InfluxDB 3 Core 是我们新的开源产品。 它是用于时间序列和事件数据的最新数据引擎。 InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看