ClickHouse 中的字典
LIFETIME(MIN 0 MAX 0),问题会更严重,因为这意味着字典永远不会自动刷新。因此,在执行 RELOAD DICTIONARIES 命令之前,字典会一直为空。
解决这个问题的方法是:创建字典时不要指定源表,而应改用 SELECT 查询,并启用设置 select_sequential_consistency=1。
与其指定源表,不如:
select_sequential_consistency=1 设为参数的 SELECT 查询:
为什么会出现这个问题?
select_sequential_consistency,代价是性能会下降 (这也是通常不建议使用它的原因) 。
字典的情况会更棘手一些,因为字典使用的不是查询里的设置,而是服务器设置。因此,在向字典加载数据时,即使你执行了 SET select_sequential_consistency=1,各副本之间加载到的数据仍可能不一致。在字典源查询中指定 select_sequential_consistency=1,可以让字典遵循这一设置,即使它没有作为服务器级设置在全局启用。