优化查询
优化SQL和InfluxQL查询以提高性能,降低它们的内存和计算(CPU)需求。了解如何使用可观察性工具来分析查询执行并查看指标。
不支持自定义分区
InfluxDB Cloud Serverless 不支持自定义分区。
自定义分区可以使查询受益于在WHERE子句中查找特定标签值。要使用自定义分区,请考虑InfluxDB Cloud Dedicated或InfluxDB Clustered。
为什么我的查询这么慢?
查询性能取决于时间范围和查询复杂性等因素。如果查询比预期慢,请考虑以下潜在原因:
- 查询跨越了很长的时间范围,这增加了被处理的数据量。
- 查询执行密集型操作,如:
- 使用
ORDER BY对大数据集进行排序或重新排序。 - 查询多个字符串值,这可能是计算上昂贵的。
- 使用
提高查询性能的策略
以下设计策略通常可以提高查询性能和资源使用:
仅查询您需要的数据
包含一个 WHERE 子句
InfluxDB 3 为每个测量和每一天将数据存储在 Parquet 文件中,并从对象存储中检索文件以回答查询。为了减少查询需要从对象存储中检索的文件数量,请包含一个 WHERE 子句,按照时间范围过滤数据。
仅选择您所需的列
因为 InfluxDB 3 是一个列式数据库,它只处理在查询中选择的列,这可以减轻 宽模式 对查询性能的影响。
然而,一个从宽模式中检索大量列的非特定查询可能比更有针对性的查询更慢且效率更低——例如,考虑以下查询:
SELECT time,a,b,cSELECT *
如果表包含10列,则两个查询之间的性能差异很小。
在一个超过1000列的表中,SELECT * 查询速度较慢,效率较低。
识别和解决瓶颈
要识别性能瓶颈,学习如何 分析查询计划。查询计划提供运行时度量,例如扫描的文件数量,这可能揭示查询执行中的低效之处。
请求帮助以解决查询问题
一些瓶颈可能源于超出您控制范围的次优查询 执行计划。示例包括:
- 对已经排序的数据进行排序 (
ORDER BY)。 - 从对象存储中检索大量小的Parquet文件,而不是较少的较大文件。
- 查询许多重叠的Parquet文件。
- 执行高数量的表扫描。
如果您按照步骤优化和排查查询问题,但它仍然无法满足性能要求,请请求帮助进行故障排除。拥有InfluxDB Cloud Serverless 年度支持合同的客户可以联系InfluxData支持以获得帮助。
查询跟踪日志
拥有 InfluxDB Cloud Serverless 年度或支持合同 的客户可以 联系 InfluxData 支持 来启用查询的追踪。启用追踪后,InfluxData 支持团队可以分析特定查询实例的系统过程和日志。
跟踪系统使用OpenTelemetry traces模型来提供对请求的可观察性并识别性能瓶颈。