dictionnaires dans ClickHouse
LIFETIME(MIN 0 MAX 0), car cela signifie que le dictionnaire ne sera jamais actualisé automatiquement. Par conséquent, le dictionnaire restera vide tant que la commande RELOAD DICTIONARIES n’aura pas été exécutée.
Pour résoudre ce problème, utilisez une requête SELECT au lieu de spécifier une table source lors de la création du dictionnaire, et activez le paramètre select_sequential_consistency=1.
Au lieu de spécifier une table source :
SELECT avec select_sequential_consistency=1 :
Pourquoi ce problème se produit-il ?
select_sequential_consistency.
Le cas des dictionnaires est un peu plus délicat, car les dictionnaires n’utilisent pas les paramètres de la requête, mais ceux du serveur. Par conséquent, lors du chargement des données dans le dictionnaire, même si vous SET select_sequential_consistency=1, les données peuvent être chargées de façon incohérente entre les répliques. Le fait de spécifier select_sequential_consistency=1 dans la requête de la source du dictionnaire permet au dictionnaire de respecter ce paramètre, même s’il n’est pas activé globalement en tant que paramètre du serveur.