InfluxDB 3 Core 内部结构
数据如何在 InfluxDB 3 Core 中流动
当数据写入 InfluxDB 3 Core 时,它会经过多个阶段以确保持久性、优化性能并实现高效查询。每个阶段的配置选项会影响系统行为,从而平衡可靠性和资源使用。
写入的数据流
随着写入的数据在 InfluxDB 3 Core 中移动,它遵循结构化路径,以确保持久性、高效查询和优化存储。
图:InfluxDB 3 Core 和 Enterprise 的写入请求、响应和摄取流程
写入验证和内存缓冲区
- 过程: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 文件放入内存缓存中,以便针对最近持久化数据的查询不必访问对象存储。
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 3 Core 和此文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度或支持合同的客户 可以联系 InfluxData 支持。