Skip to main content

字典布局类型

字典可通过多种方式存储在内存中,每种方式都需要在 CPU 和 RAM 占用之间进行权衡。
推荐布局flat、hashed 和 complex_key_hashed 可提供最佳查询性能。 不推荐使用缓存类布局,因为其性能可能较差,且参数调优困难——详见 cache。
基于缓存的布局无法可靠地支持写入时富集,因为已预热的条目仅保存在各个服务器本地,一旦服务器重启或被替换就会丢失。而 ClickHouse Cloud 的自动扩缩容和托管节点替换会使这种情况更容易发生。请改用完全加载的布局;详见 摄取路径中的缓存字典。

指定字典布局

如果您在 ClickHouse Cloud 中使用字典,请使用 DDL 查询选项创建字典,并以 default 用户创建。 此外,请在 Cloud 兼容性指南 中确认受支持的字典源列表。
你可以使用 LAYOUT 子句 (用于 DDL) ,或在配置文件定义中使用 layout 设置来配置字典布局。

另请参阅 CREATE DICTIONARY 以了解完整的 DDL 语法。 布局中不包含 complex-key* 的字典,其键类型为 UInt64;complex-key* 字典则使用复合键 (复杂键,可包含任意类型) 。 数值键示例 (列 key_column 的类型为 UInt64) :

复合键示例 (该键包含一个 String 类型的元素) :

提高字典性能

有几种方法可以提高字典性能:
  • 在 GROUP BY 之后调用字典相关函数。
  • 将要提取的属性标记为 injective。 如果不同的键对应不同的属性值,则该属性称为 injective。 因此,当 GROUP BY 使用按键获取属性值的函数时,该函数会自动从 GROUP BY 中移出。
对于字典错误,ClickHouse 会生成异常。 错误示例包括:
  • 正在访问的字典无法加载。
  • 查询 cached 字典时出错。
你可以在 system.dictionaries 表中查看字典列表及其状态。