ClickHouse의 딕셔너리
part가 server에 도달하기 전에 딕셔너리가 생성되어 발생하는 경우가 있기 때문입니다. 예시는 다음과 같습니다:
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을 지정하면, 서버 설정으로 전역 활성화되어 있지 않더라도 딕셔너리가 이 설정을 따르도록 할 수 있습니다.