文档资料

管理数据分区

当向InfluxDB Clustered写入数据时,InfluxDB v3存储引擎以对象存储格式存储在Apache Parquet中的数据。每个Parquet文件代表一个分区——数据的一个逻辑分组。默认情况下,InfluxDB按天对每个表进行分区。InfluxDB Clustered允许您自定义分区策略,并按标签值和不同的时间间隔进行分区。自定义您的分区策略以优化特定于您模式和负载的查询性能。

优点

自定义分区的主要优势是可以自定义您的存储结构,以优化特定于您模式和负载的查询性能。

  • 针对特定类型查询优化存储以提高性能。例如,如果查询经常选择具有特定标签值的的数据,可以通过该标签进行分区以提高这些查询的性能。
  • 针对特定类型数据的优化存储。例如,如果存储的数据是稀疏的,并且查询的时间范围通常远大于一天,则可以按周而不是按天进行数据分区。

缺点

使用自定义分区可能会增加InfluxDB v3存储引擎其他部分的负载,但每个部分都可以单独扩展以应对增加的负载。

以下缺点假设您的自定义分区策略包括用于分区的额外标签或小于一天的分区间隔。

  • 增加对Ingester的负载,因为它将数据分组到更小的分区和文件中。
  • 增加对Catalog的负载,因为存储和查询的分区Parquet文件位置引用更多。
  • 增加对Compactor的负载,因为需要压缩更多的分区Parquet文件。
  • 对象存储相关的成本增加,因为创建了更多并存储了更多的分区Parquet文件。
  • 未在WHERE子句中使用标签的查询性能下降的风险。这些查询可能最终会读取许多分区和较小的文件,降低性能。

限制

自定义分区有以下限制

  • 数据库和表分区只能在创建时定义。创建后不能更新数据库或表的分区策略。
  • 分区模板必须包含时间部分。
  • 可以按最多八个维度(七个标签和一个时间间隔)进行分区。

分区工作原理

分区模板

分区模板定义了分区键使用的模式,并确定数据按什么时间间隔进行分区。分区模板使用标签值和Rust strftime日期和时间格式化语法

有关更详细的信息,请参阅分区模板

分区键

分区键唯一标识一个分区。一个分区模板定义了分区键的格式。分区键由最多8个维度组成(1个时间部分和最多7个标签或标签桶部分)。每个部分由分区键分隔符(|)分隔。

分区键的默认格式是%Y-%m-%d(例如,2024-01-01)。

查看示例分区模板和键

查询生命周期中的分区

查询数据时

  1. 目录为v3查询引擎(查询器)提供包含查询时间序列数据的分区位置。
  2. 查询引擎读取返回分区中的所有行,以确定哪些行与查询逻辑匹配并应包含在查询结果中。

查询引擎越快能够识别要读取的分区,并读取这些分区中的数据,查询性能就越高。

有关查询生命周期的更多信息,请参阅InfluxDB v3查询生命周期

查询示例

考虑以下查询,该查询选择production表中所有line标签为Astation标签为cnc的数据

SELECT *
FROM production
WHERE
  time >= now() - INTERVAL '1 week'
  AND line = 'A'
  AND station = 'cnc'

使用默认分区策略(按天),查询引擎读取八个不同的分区(今天一个,以及过去七天的每个分区)

  • 2024-11-12
  • 2024-11-11
  • 2024-11-10
  • 2024-11-09
  • 2024-11-08
  • 2024-11-07
  • 2024-11-06
  • 2024-11-05

查询引擎必须扫描分区中的所有行,以确定哪些行中lineAstationcnc。这个过程耗时且导致查询性能下降。

但是,如果您按其他标签分区,InfluxDB可以识别只包含查询需要的标签值的分区,从而减少扫描行以查看是否包含标签值的时间。

例如,如果数据按linestation和天进行分区,尽管有更多的分区文件,但查询引擎可以快速识别并读取仅与查询相关的数据

  • A | cnc | 2024-11-12

  • A | wld | 2024-11-12

  • B | cnc | 2024-11-12

  • B | wld | 2024-11-12

  • A | cnc | 2024-11-11

  • A | wld | 2024-11-11

  • B | cnc | 2024-11-11

  • B | wld | 2024-11-11

  • A | cnc | 2024-11-10

  • A | wld | 2024-11-10

  • B | cnc | 2024-11-10

  • B | wld | 2024-11-10

  • A | cnc | 2024-11-09

  • A | wld | 2024-11-09

  • B | cnc | 2024-11-09

  • B | wld | 2024-11-09

  • A | cnc | 2024-11-08

  • A | wld | 2024-11-08

  • B | cnc | 2024-11-08

  • B | wld | 2024-11-08

  • A | cnc | 2024-11-07

  • A | wld | 2024-11-07

  • B | cnc | 2024-11-07

  • B | wld | 2024-11-07

  • A | cnc | 2024-11-06

  • A | wld | 2024-11-06

  • B | cnc | 2024-11-06

  • B | wld | 2024-11-06

  • A | cnc | 2024-11-05

  • A | wld | 2024-11-05

  • B | cnc | 2024-11-05

  • B | wld | 2024-11-05


分区指南


这个页面有帮助吗?

感谢您的反馈!


Flux的未来

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

了解更多

InfluxDB v3 增强功能和 InfluxDB 集群版现已正式推出

新功能包括更快的查询性能和管理工具,推动 InfluxDB v3 产品线的进步。InfluxDB 集群版现已正式推出。

InfluxDB v3 性能和功能

InfluxDB v3 产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括用于监控 InfluxDB 集群健康状况的操作仪表板,InfluxDB 云专享版中的单点登录(SSO)支持,以及用于令牌和数据库的新管理 API。

了解 v3 增强功能


InfluxDB 集群版正式推出

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

与我们谈论 InfluxDB 集群版