分区最佳实践
在为存储在 InfluxDB 集群中的数据定义自定义分区策略时,请使用以下最佳实践。
根据您通常查询的特定值的标签进行分区
自定义分区主要有利于查询 WHERE 子句中寻找特定标签值的查询。例如,如果您经常查询与特定 ID 相关的数据,则按存储 ID 的标签进行分区可以帮助 InfluxDB 查询引擎更快地识别包含相关数据的分区。
为高基数标签使用标签桶
使用具有许多(10K+)唯一值的标签的不同值进行分区实际上可能会损害查询性能,因为会为每个唯一的标签值创建分区。相反,使用 标签桶 来按高基数标签进行分区。这种方法将标签值分组到“桶”中,并按桶进行分区。
只根据始终具有值的标签进行分区
您应该只根据始终具有值的标签进行分区。如果点没有该标签的值,InfluxDB 无法将其存储在正确的分区中,并且在查询时必须读取所有分区。
避免过度分区
在规划您的分区策略时,请注意数据可能会被“过度分区”——这意味着分区非常细粒度,查询最终必须从对象存储中检索和读取许多分区,这会损害查询性能。
- 平衡分区时间间隔与每个间隔实际写入的数据量。如果单个间隔不包含大量数据,则最好按更大的时间间隔进行分区。
- 不要根据您通常在查询工作中不使用的标签进行分区。
- 不要根据高基数标签的唯一值进行分区。相反,使用标签桶 来按这些标签进行分区。
这个页面有帮助吗?
感谢您的反馈!