首页/数据/NoSQL 速查/字典 DICTIONARY 与 dictGet
ClickHouse56 条

字典 DICTIONARY 与 dictGet

字典把外部数据(ClickHouse 表、MySQL、文件、HTTP 等)加载为内存键值结构,用 dictGet 做维度补全与枚举翻译,避免每行做 JOIN。

NoSQL 速查数据更新于 2026-10-12
定义CREATE DICTIONARY … PRIMARY KEY id SOURCE(CLICKHOUSE(…)) LIFETIME(MIN 300 MAX 600) LAYOUT(HASHED())
取值dictGet('db.dict', 'attr', key)、dictGetOrDefault
状态system.dictionaries 的 status、element_count、bytes_allocated、last_exception

示例

示例
CREATE DICTIONARY analytics.users_dict
(
    id UInt64,
    name String,
    level UInt8
)
PRIMARY KEY id
SOURCE(CLICKHOUSE(TABLE 'users' DB 'analytics'))
LIFETIME(MIN 300 MAX 600)
LAYOUT(HASHED());

SELECT dictGet('analytics.users_dict', 'name', toUInt64(1001));
LIFETIME 控制自动刷新区间;也可用 SYSTEM RELOAD DICTIONARY 手动刷新。

易错点

  • HASHED 布局适合小字典,百万级以上键要看内存占用并考虑其他布局
  • 字典加载失败时 dictGet 返回空值或默认值,排错先看 system.dictionaries.last_exception

数据来源与参考

  • ClickHouse Docs: Dictionaries
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌