文档文档

管理不同值缓存

InfluxDB 3 Core Distinct Value Cache (DVC) 允许您缓存表中一个或多个列的Distinct值,从而提高返回Distinct标签和字段值的查询性能。

DVC 是一个内存缓存,用于存储表中特定列的Distinct值。创建DVC时,您可以指定要缓存的列的Distinct值、要缓存的Distinct值组合的最大数量以及缓存值的最大年龄。DVC与表相关联,一个表可以有多个DVC。

考虑一个具有以下模式的数据集

  • wind_data (表)
    • 标签 (tags)
      • country
        • 多个欧洲国家
      • county
        • 多个欧洲郡
      • city
        • 多个欧洲城市
    • 字段 (fields)
      • wind_speed (float)
      • wind_direction (integer)

如果您缓存 countrycountycity 的Distinct值,DVC 将类似于以下内容

countrycountycity
奥地利萨尔茨堡萨尔茨堡
奥地利维也纳维也纳
比利时安特卫普安特卫普
比利时西弗兰德省布鲁日
捷克共和国利贝雷茨州利贝雷茨
捷克共和国布拉格布拉格
丹麦首都地区哥本哈根
丹麦南丹麦大区欧登塞
爱沙尼亚伊达-维鲁县科赫特拉-耶尔韦
爱沙尼亚伊达-维鲁县纳尔瓦
.........

DVC结果中的重复值

查询DVC时,Distinct值可能在一列中出现多次,但这仅当它们与其他列中的Distinct值相关联时。如果您查询DVC中的单列,结果中不会出现重复值。

Null列值

Null 列值仍被视为值,并被缓存到DVC中。如果您将数据写入表而未为现有列提供值,则该列值将被缓存为null,并被视为Distinct值。

关于Distinct Value Cache的重要事项

DVC 存储在内存中;缓存越大,InfluxDB 3 节点维护它所需的内存就越多。请考虑以下几点

缓存数据加载

创建缓存时,InfluxDB 3 Core 会将历史数据加载到缓存中。重启后,服务器会自动重新加载缓存数据。

高基数限制

“基数”是指缓存数据中唯一键列组合的数量,它基本上定义了DVC要存储的最大行数。虽然InfluxDB 3存储引擎不受基数限制,但它确实会影响DVC。您可以为DVC定义自定义的最大基数限制,但更高的基数会增加存储DVC的内存需求,并可能影响DVC的查询性能。

服务器停止时Distinct Value Cache会被刷新

由于DVC是内存缓存,因此服务器停止时缓存会被刷新。服务器重启后,InfluxDB 3 Core只在您写入数据时将新值写入DVC,因此可能存在一段时间内DVC中某些值不可用的情况。


此页面是否有帮助?

感谢您的反馈!


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