管理 Distinct Value Cache
InfluxDB 3 Core Distinct Value Cache (DVC) 允许您缓存表中一个或多个列的不同值,从而提高返回不同标签和字段值的查询性能。
DVC 是一种内存缓存,用于存储表中特定列的不同值。当您创建 DVC 时,您可以指定要缓存哪些列的不同值、要缓存的最大不同值组合数以及缓存值的最大期限。DVC 与表关联,一个表可以有多个 DVC。
考虑具有以下模式的数据集
- wind_data (表)
- 标签
- 国家
- 多个欧洲国家
- 县
- 多个欧洲县
- 城市
- 多个欧洲城市
- 国家
- 字段
- wind_speed (浮点数)
- wind_direction (整数)
- 标签
如果您缓存 country
、county
和 city
的不同值,则 DVC 看起来类似于这样
国家 | 县 | 城市 |
---|---|---|
奥地利 | 萨尔茨堡 | 萨尔茨堡 |
奥地利 | 维也纳 | 维也纳 |
比利时 | 安特卫普 | 安特卫普 |
比利时 | 西弗兰德省 | 布鲁日 |
捷克共和国 | 利贝雷茨州 | 利贝雷茨 |
捷克共和国 | 布拉格 | 布拉格 |
丹麦 | 首都大区 | 哥本哈根 |
丹麦 | 南丹麦大区 | 欧登塞 |
爱沙尼亚 | 东维鲁县 | 科赫特拉-耶尔韦 |
爱沙尼亚 | 东维鲁县 | 纳尔瓦 |
… | … | … |
DVC 结果中的重复值
当查询 DVC 时,不同值可能在一列中多次出现,但仅当与其他列中的不同值关联时才会出现。如果您查询 DVC 中的单列,则结果中不会重复任何值。
Null 列值
Null 列值仍然被视为值,并缓存在 DVC 中。如果您将数据写入表,并且未为现有列提供值,则列值将缓存为 null 并被视为不同值。
创建 Distinct Value Cache
使用 influxdb3 create distinct_cache
命令 创建 Distinct Value Cache。
influxdb3 create distinct_cache \
--database example-db \
--token 00xoXX0xXXx0000XxxxXx0Xx0xx0 \
--table wind_data \
--columns country,county,city \
--max-cardinality 10000 \
--max-age 24h \
windDistinctCache
查询 Distinct Value Cache
在 SQL SELECT
语句的 FROM
子句中使用 distinct_cache()
SQL 函数 从 Distinct Value Cache 查询数据。
SELECT * FROM distinct_cache('table-name', 'cache-name')
您必须使用 SQL 查询 DVC。InfluxQL 不支持 distinct_cache()
函数。
显示关于 Distinct Value Cache 的信息
使用 influxdb3 show system table
命令从 distinct_caches
系统表查询和输出 Distinct Value Cache 信息。
influxdb3 show system \
--database example-db \
--token 00xoXX0xXXx0000XxxxXx0Xx0xx0 \
table distinct_caches
删除 Distinct Value Cache
使用 influxdb3 delete distinct_cache
命令 删除 Distinct Value Cache。
influxdb3 delete distinct_cache \
--database example-db \
--token 00xoXX0xXXx0000XxxxXx0Xx0xx0 \
--table wind_data \
windDistinctCache
关于 Distinct Value Cache 的重要须知
DVC 存储在内存中;缓存越大,您的 InfluxDB 3 节点维护它所需的内存就越多。请考虑以下事项
高基数限制
“基数”是指缓存数据中唯一键列组合的数量,并且基本上定义了 DVC 中要存储的最大行数。虽然 InfluxDB 3 存储引擎不受基数限制,但它确实会影响 DVC。您可以为 DVC 定义自定义的最大基数限制,但更高的基数会增加存储 DVC 的内存需求,并可能影响 DVC 查询性能。
当服务器停止时,Distinct Value Cache 将被刷新
由于 DVC 是内存缓存,因此每次服务器停止时都会刷新缓存。服务器重启后,InfluxDB 3 Core 仅在您写入数据时才将新值写入 DVC,因此可能有一段时间 DVC 中某些值不可用。
此页内容是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 3 Core 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度或支持合同的客户可以联系 InfluxData 支持。