이러한 설정은 system.settings에서 확인할 수 있으며, 소스 코드로부터 자동 생성됩니다.
insert_quorum
쿼럼 쓰기를 활성화합니다.
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_parallel
버전 이력
| 버전 | 기본값 | 설명 |
|---|---|---|
| 21.1 | 1 | 기본적으로 병렬 쿼럼 삽입을 사용합니다. 순차 쿼럼 삽입보다 훨씬 편리합니다 |
쿼럼 INSERT 쿼리의 병렬 실행을 활성화하거나 비활성화합니다. 활성화하면 이전 쿼리가 아직 완료되지 않았더라도 추가 INSERT 쿼리를 전송할 수 있습니다. 비활성화하면 동일한 테이블에 대한 추가 쓰기 작업이 거부됩니다.
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
관련 항목:
insert_quorum_timeout
쿼럼에 대한 쓰기 시간 제한으로, 단위는 밀리초입니다. 제한 시간이 경과할 때까지 아직 쓰기가 수행되지 않으면 ClickHouse가 예외를 발생시키며, 클라이언트는 동일한 블록을 동일한 레플리카 또는 다른 레플리카에 쓰기 위해 쿼리를 다시 실행해야 합니다.
관련 항목: