文档文档

InfluxDB 3 Core 内部

数据如何在 InfluxDB 3 Core 中流转

当数据写入 InfluxDB 3 Core 时,它会经过多个阶段,以确保持久性、优化性能并实现高效查询。每个阶段的配置选项都会影响系统行为,平衡可靠性和资源使用。

写入数据流

当写入的数据在 InfluxDB 3 Core 中流转时,它会遵循结构化的路径,以确保持久性、高效查询和优化存储。

InfluxDB 3 Core & Enterprise 的摄取路径和数据流 图:InfluxDB 3 Core 和 Enterprise 的写入请求、响应和摄取流程

  1. 写入验证和内存缓冲区
  2. 预写日志 (WAL) 持久化
  3. 查询可用性
  4. Parquet 存储
  5. 内存缓存

写入验证和内存缓冲区

  • 流程:InfluxDB 在接受数据进入系统之前会验证传入的数据。
  • 影响:防止格式错误或不受支持的数据进入数据库。
  • 详情:数据库会验证传入的数据并将其存储在写入缓冲区(内存中)。如果设置了 no_sync=true,服务器会在 不等待持久化完成的情况下 发送响应以确认写入。

预写日志 (WAL) 持久化

  • 流程:数据库每秒(默认)将写入缓冲区刷新到 WAL。
  • 影响:通过将数据持久化到对象存储来确保持久性。
  • 权衡:更频繁的刷新可以提高持久性,但会增加 I/O 开销。
  • 详情:每秒(默认),数据库会将写入缓冲区刷新到预写日志 (WAL) 中进行持久化存储。如果设置了 no_sync=false(默认),服务器会发送响应以确认写入。

查询可用性

  • 流程:在 WAL 持久化后,系统会将数据移至可查询缓冲区。
  • 影响:实现对近期数据的快速查询。
  • 权衡:较大的缓冲区可以加快查询速度,但会增加内存使用量。
  • 详情:WAL 持久化完成后,数据会移至可查询缓冲区,从而可供查询。默认情况下,服务器会缓冲多达 900 个 WAL 文件(15 分钟的数据)。

Parquet 存储

  • 流程:每十分钟(默认),数据会被持久化到对象存储中的 Parquet 文件。
  • 影响:提供持久的长期存储。
  • 权衡:更频繁的持久化可以减少对 WAL 的依赖,但会增加 I/O 成本。
  • 内存使用:持久化过程在将数据转换为 Parquet 格式时会使用配置的内存池(exec-mem-pool-bytes)中的内存。对于写入密集型工作负载,请确保分配了足够的内存。
  • 详情:每十分钟(默认),InfluxDB 3 Core 会将可查询缓冲区中最旧的数据以 Parquet 格式持久化到对象存储,并将剩余数据(最近 5 分钟)保留在内存中。

内存缓存

  • 流程:最近持久化的 Parquet 文件会被缓存在内存中。
  • 影响:通过最小化对象存储访问来降低查询延迟。
  • 详情:InfluxDB 3 Core 将 Parquet 文件放入内存缓存,以便对最近持久化数据的查询无需访问对象存储。

此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2