INSERT 쿼럼 관련 설정
INSERT 쿼럼 관련 설정
쿼럼 쓰기(quorum writes)를 활성화하고, 쿼럼 삽입의 병렬 처리와 타임아웃을 제어하는 설정들이에요. 데이터가 insert_quorum 수의 레플리카에 정확히 쓰여졌을 때만 INSERT가 성공하도록 보장한답니다. 이 설정들은 system.settings 테이블에서 확인할 수 있고 소스 코드에서 자동 생성된 값들이에요.
출처: 문서
본문
이 설정들은 system.settings에서 확인할 수 있고, 소스 코드에서 자동 생성된 값들이에요.
insert_quorum
이 설정은 SharedMergeTree에는 적용되지 않아요. 자세한 내용은 SharedMergeTree 일관성을 참조하세요.
쿼럼 쓰기를 활성화해요. insert_quorum < 2이면 쿼럼 쓰기가 비활성화돼요. insert_quorum >= 2이면 쿼럼 쓰기가 활성화돼요. insert_quorum = 'auto'이면 쿼럼 수로 과반수 수(number_of_replicas / 2 + 1)를 사용해요.
쿼럼 쓰기
INSERT는 ClickHouse가 insert_quorum_timeout 동안 insert_quorum 수의 레플리카에 데이터를 올바르게 쓰는 데 성공할 때만 성공해요. 어떤 이유로든 성공적인 쓰기가 있는 레플리카 수가 insert_quorum에 도달하지 못하면 쓰기는 실패한 것으로 간주되고 ClickHouse는 이미 데이터가 쓰여진 모든 레플리카에서 삽입된 블록을 삭제해요.
insert_quorum_parallel이 비활성화되면 쿼럼의 모든 레플리카가 일관적이에요. 즉 이전 모든 INSERT 쿼리(INSERT 시퀀스가 선형화됨)의 데이터를 포함해요. insert_quorum과 비활성화된 insert_quorum_parallel로 쓰여진 데이터를 읽을 때, select_sequential_consistency를 사용해 SELECT 쿼리에 대한 순차 일관성을 켤 수 있어요.
ClickHouse는 다음과 같은 경우 예외를 생성해요:
- 쿼리 시점에 사용 가능한 레플리카 수가
insert_quorum보다 적을 때. insert_quorum_parallel이 비활성화되고 이전 블록이 아직insert_quorum수의 레플리카에 삽입되지 않았는데 데이터를 쓰려고 할 때. 이 상황은 사용자가insert_quorum이 있는 이전 쿼리가 완료되기 전에 같은 테이블에 또 다른INSERT쿼리를 수행하려 할 때 발생할 수 있어요.
함께 보기:
insert_quorum_timeoutinsert_quorum_parallelselect_sequential_consistency
insert_quorum_parallel
이 설정은 SharedMergeTree에는 적용되지 않아요. 자세한 내용은 SharedMergeTree 일관성을 참조하세요.
쿼럼 INSERT 쿼리의 병렬 처리를 활성화하거나 비활성화해요. 활성화하면 이전 쿼리가 아직 끝나지 않았을 때 추가 INSERT 쿼리를 보낼 수 있어요. 비활성화하면 같은 테이블에 대한 추가 쓰기가 거부돼요.
가능한 값:
- 0 — 비활성화.
- 1 — 활성화.
함께 보기:
insert_quoruminsert_quorum_timeoutselect_sequential_consistency
insert_quorum_timeout
쿼럼에 쓰는 타임아웃(밀리초)이에요. 타임아웃이 지났는데도 쓰기가 아직 발생하지 않았다면 ClickHouse가 예외를 생성하고, 클라이언트는 같은 블록을 같은 또는 다른 레플리카에 쓰기 위해 쿼리를 반복해야 해요.
함께 보기:
insert_quoruminsert_quorum_parallelselect_sequential_consistency