ClickHouse における Dictionaries
LIFETIME(MIN 0 MAX 0) を使用している場合、これはさらに深刻な問題になる可能性があります。これは、Dictionary が自動的に更新されないことを意味するためです。したがって、RELOAD DICTIONARIES コマンドを実行するまで、Dictionary は空のままです。
この問題を解決するには、Dictionary の作成時にソーステーブルを指定する代わりに SELECT クエリを使用し、select_sequential_consistency=1 設定を有効にします。
ソーステーブルを指定する代わりに:
select_sequential_consistency=1 を指定した SELECT クエリを使用します:
この問題はなぜ発生するのですか?
select_sequential_consistency を有効にできます (そのため、通常は使用は推奨されません) 。
Dictionary の場合は少し厄介で、Dictionary はクエリの設定ではなく、サーバーの設定を使用します。そのため、Dictionary にデータを読み込む際は、SET select_sequential_consistency=1 を指定していても、データがレプリカ間で不整合に読み込まれることがあります。Dictionary ソースのクエリで select_sequential_consistency=1 を指定すると、サーバー設定としてグローバルに有効になっていなくても、Dictionary はこの設定に従うことができます。