文档文档

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 成本。
  • 详情:每十分钟(默认),InfluxDB 3 Core 将可查询缓冲区中最旧的数据持久化到对象存储中的 Parquet 格式,并将剩余数据(最近 5 分钟的数据)保留在内存中。

内存缓存

  • 过程:最近持久化的 Parquet 文件缓存在内存中。
  • 影响:通过最大限度地减少对象存储访问来减少查询延迟。
  • 详情:InfluxDB 3 Core 将 Parquet 文件放入内存缓存中,以便针对最近持久化数据的查询不必访问对象存储。

此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最近数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,以实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看