- 더 높은 삽입 처리량
- 백그라운드 머지 처리량 향상
- 뮤테이션 처리량 향상
- 더 빠른 확장 및 축소 작업
- select 쿼리에 대한 더 경량화된 강한 일관성
내부 검사
system.replication_queue와 system.replicated_fetches는 예외입니다. 하지만 SharedMergeTree에는 이 두 테이블에 대응하는 대체 테이블이 있습니다.
system.virtual_parts
이 테이블은 SharedMergeTree에서 system.replication_queue를 대체하는 역할을 합니다. 현재 파트의 최신 집합에 대한 정보와 함께, 머지, 뮤테이션, 파티션 삭제처럼 진행 중인 향후 파트에 대한 정보도 저장합니다.
system.shared_merge_tree_fetches
이 테이블은 SharedMergeTree에서 system.replicated_fetches를 대체합니다. 메모리로 프라이머리 키와 체크섬을 가져오는 현재 진행 중인 fetch에 대한 정보를 포함합니다.
SharedMergeTree는 기본적으로 활성화되어 있습니다.
SharedMergeTree 테이블 엔진을 지원하는 서비스에서는 별도로 수동 설정할 필요가 없습니다. 이전과 동일한 방식으로 테이블을 생성하면, CREATE TABLE 쿼리에서 지정한 엔진에 대응하는 SharedMergeTree 기반 테이블 엔진이 자동으로 사용됩니다.
my_table 테이블이 생성됩니다.
ClickHouse Cloud에서는 default_table_engine=MergeTree가 기본값이므로 ENGINE=MergeTree를 지정할 필요가 없습니다. 다음 쿼리는 위의 쿼리와 동일합니다.
SHOW CREATE TABLE로 CREATE TABLE 문을 확인하면 알 수 있습니다:
설정
insert_quorum— SharedMergeTree에 대한 모든 삽입은 quorum 삽입(공유 스토리지에 기록됨)이므로 SharedMergeTree 테이블 엔진을 사용할 때는 이 설정이 필요하지 않습니다.insert_quorum_parallel— SharedMergeTree에 대한 모든 삽입은 quorum 삽입(공유 스토리지에 기록됨)이므로 SharedMergeTree 테이블 엔진을 사용할 때는 이 설정이 필요하지 않습니다.select_sequential_consistency— quorum 삽입이 필요하지 않지만,SELECT쿼리 시 clickhouse-keeper에 추가 부하를 발생시킵니다
일관성
insert_quorum 또는 insert_quorum_parallel 같은 설정을 지정할 필요가 없습니다. 삽입은 quorum 삽입으로 처리되며, 즉 메타데이터가 ClickHouse-Keeper에 저장되고 해당 메타데이터가 최소 quorum 수의 ClickHouse-keepers에 복제됩니다. 클러스터의 각 레플리카는 ClickHouse-Keeper에서 새 정보를 비동기적으로 가져옵니다.
대부분의 경우 select_sequential_consistency 또는 SYSTEM SYNC REPLICA LIGHTWEIGHT를 사용할 필요가 없습니다. 비동기 복제는 대부분의 시나리오를 포괄하며 지연 시간이 매우 짧습니다. 드물지만 오래된 데이터 읽기를 반드시 방지해야 하는 경우에는, 우선순위 순서대로 다음 권장 사항을 따르십시오:
-
읽기와 쓰기 모두에서 동일한 세션 또는 동일한 노드에서 쿼리를 실행하는 경우, 레플리카에 이미 최신 메타데이터가 있으므로
select_sequential_consistency를 사용할 필요가 없습니다. -
한 레플리카에 쓰고 다른 레플리카에서 읽는 경우,
SYSTEM SYNC REPLICA LIGHTWEIGHT를 사용해 해당 레플리카가 ClickHouse-Keeper에서 메타데이터를 가져오도록 강제할 수 있습니다. -
쿼리 설정의 일부로
select_sequential_consistency를 사용합니다.