文档资料

优化查询

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

为什么我的查询慢?

查询性能取决于时间范围和复杂性。如果一个查询比您预期的慢,可能是因为以下原因:

  • 它查询来自大时间范围的数据。
  • 它包括密集操作,例如查询许多字符串值或ORDER BY排序或重新排序大量数据。

提高查询性能的策略

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

某些瓶颈可能超出了您的控制,是次优执行计划的结果,例如:

  • 对已排序的数据应用相同的排序(ORDER BY)。
  • 从对象存储中检索许多Parquet文件——如果它检索的文件更少,尽管文件更大,性能会更好。
  • 查询许多重叠的Parquet文件。
  • 执行大量表扫描。

分析查询计划以查看指标和识别瓶颈

要查看查询的运行时指标,例如扫描的文件数,请使用EXPLAIN ANALYZE关键字并了解如何分析查询计划

只查询您所需的数据

包含WHERE子句

InfluxDB v3 以 Parquet 文件形式存储每个分区的数据。默认情况下,InfluxDB 按日对分区进行集群化存储,但您也可以自定义分区数据。查询时,InfluxDB 从对象存储中检索文件以回答查询。为了减少查询需要从对象存储检索的文件数量,请包含一个WHERE子句,通过时间范围或特定标签值过滤数据。

仅选择需要的列

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

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

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

如果表包含10列,两个查询之间的性能差异很小。在一个包含超过1000列的表中,SELECT *查询会更慢且效率更低。

分析和调试查询

了解如何分析查询计划以诊断查询并找到性能瓶颈。

如果您需要帮助诊断,请遵循指南报告查询性能问题


这个页面有帮助吗?

感谢您的反馈!


Flux 的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对代码进行任何更改。

阅读更多

InfluxDB v3 增强功能和 InfluxDB Clustered 现已正式上市

新功能,包括更快的查询性能和管理工具,推进了 InfluxDB v3 产品线。InfluxDB Clustered 现已正式上市。

InfluxDB v3 性能和功能

InfluxDB v3产品线在查询性能方面进行了重大改进,并提供了新的管理工具。这些改进包括用于监控InfluxDB集群健康状况的操作仪表板,InfluxDB Cloud Dedicated中的单点登录(SSO)支持,以及用于令牌和数据库的新管理API。

了解v3的新增功能


InfluxDB集群版正式发布

InfluxDB集群版现已正式发布,并为您在自管理堆栈中提供InfluxDB v3的强大功能。

与我们讨论InfluxDB集群版