优化查询
将数据写入您的集群后,您现在可以开始定义和测试您的典型查询模式,并采用优化措施以确保查询性能。
定义您的查询模式
了解您的典型查询模式有助于优先优化以满足您的查询性能要求。
例如,考虑以下问题
- 您通常按特定的标签值查询数据吗?
将自定义分区应用于您的目标数据库或表,以按这些标签进行分区。按常用查询标签进行分区有助于InfluxDB快速识别存储中相关数据的位置,并提高查询性能。 - 您查询具有宽模式的表吗?
避免在您的SELECT语句中使用通配符(*
)。选择您想要在查询结果中返回的特定列。查询的列越多,查询性能越低。 - 您查询大量历史时间范围吗?使用基于时间的聚合方法将数据降采样,并按时间间隔返回聚合值,而不是所有数据。
决定您的查询语言
InfluxDB Clustered同时支持SQL和InfluxQL - 一种针对InfluxDB v1设计的类似SQL的查询语言,专门用于查询时间序列数据。
SQL
InfluxDB SQL实现是一个功能齐全的SQL查询引擎,由Apache DataFusion提供支持。它受益于一个强大的上游社区,该社区不断改进引擎的功能和性能。一些时间序列特定的查询(如基于时间的聚合)在SQL中的表达比在InfluxQL中更冗长,但它们仍然是可能的。
InfluxQL
InfluxQL专门设计用于时间序列数据,并简化了许多时间序列相关操作,如基于时间的聚合、技术分析和预测。它不像SQL那样功能全面,需要了解InfluxDB v1数据模型。
优化您的查询
查看查询优化和故障排除文档以获取指导信息和如何解决不符合预期的查询的故障排除和优化信息。
分析查询
SQL和InfluxQL都支持EXPLAIN
和EXPLAIN ANALYZE
语句,这些语句返回有关查询计划和执行的详细信息。这可以提供有关您可以为特定查询进行的可能优化方面的见解。有关更多信息,请参阅分析查询计划。
自定义分区数据
InfluxDB Clustered允许您定义数据的存储方式,以确保查询性能。自定义分区自定义分区允许您定义InfluxDB如何分区数据,并可用于对数据进行结构化,以便InfluxDB更容易识别您通常查询的数据在存储中的位置。有关更多信息,请参阅管理数据分区。
报告查询性能问题
如果您已经实施了查询优化,但查询仍未能满足性能要求,请按照报告查询性能问题中描述的过程进行,以便收集InfluxData工程师所需的信息,以便他们可以帮助识别任何潜在解决方案。
这个页面有帮助吗?
感谢您的反馈!