ClickHouse의 테이블 파트란 무엇입니까?
ClickHouse MergeTree 엔진 계열에 속한 각 테이블의 데이터는 디스크에 변경할 수 없는
데이터 파트 모음으로 구성됩니다.
이를 설명하기 위해 영국에서 거래된 부동산의 날짜, 도시, 거리, 가격을 기록한 이 테이블(영국 부동산 가격 데이터셋을 바탕으로 수정)을 사용합니다:
ClickHouse 서버가 위 다이어그램에 표시된 4개 행의 예시 삽입(예: INSERT INTO 문을 통해)을 처리할 때는 여러 단계를 수행합니다:
1
정렬
행은 테이블의 정렬 키
(town, street)를 기준으로 정렬되며, 정렬된 행에 대해 희소 프라이머리 인덱스가 생성됩니다.2
분할
정렬된 데이터는 컬럼별로 분할됩니다.
3
압축
각 컬럼은 압축됩니다.
4
디스크에 쓰기
압축된 컬럼은 삽입으로 생성된 데이터 파트를 나타내는 새 디렉터리 안에 바이너리 컬럼 파일로 저장됩니다. 희소 프라이머리 인덱스도 압축되어 같은 디렉터리에 저장됩니다.
파트 머지
초기 파트 수와 머지 오버헤드를 최소화하려면 데이터베이스 클라이언트에서 권장하는 방식은 튜플을 대량으로 삽입하는 것(예: 한 번에 20,000행) 또는 비동기 삽입 모드를 사용하는 것입니다. 이 모드에서는 ClickHouse가 동일한 테이블로 들어오는 여러 INSERT의 행을 버퍼링하고, 버퍼 크기가 설정 가능한 임계값을 초과하거나 타임아웃이 만료된 경우에만 새 파트를 생성합니다.
테이블 파트 모니터링
_part를 사용하면 예시 테이블에 현재 존재하는 모든 활성 파트의 목록을 쿼리할 수 있습니다: