
flowchart LR
%% Client Layer
subgraph Client[ ]
C[1. INSERT INTO orders]
end
%% Engine Layer
subgraph Engine[ ]
P[2. 쿼리 파싱 및 플랜 생성]
B[3. Block 생성 및 정렬 처리]
NP[4. 새로운 Part 메모리 구조 준비]
end
%% Disk Layer
subgraph Disk[var/lib/clickhouse/data/orders_db/orders/]
Meta[메타데이터 파일 <br/> columns.txt, checksums.txt 등]
%% Partition 예시
subgraph P202511[Partition: 202511]
Part1[5. Part 생성 <br/> 202511_1_1_0 <br/> level 0]
Part2[6. Part 생성 <br/> 202511_2_2_0 <br/> level 0]
Merged[10. 병합 결과 Part 생성 <br/> 202511_1_2_1 <br/> level 1]
end
P202512[Partition: 202512]
end
%% 처리 흐름
C --> P
P --> B
B --> NP
NP --> Part1
NP --> Part2
%% Background Merge
subgraph MergeBG[Background Merge Thread]
MScan[7. 병합 후보 Part 탐색]
MExec[8. 병합 실행 및 정렬 유지]
Clean[9. 기존 Part inactive 처리]
end
Part1 --> MScan
Part2 --> MScan
MScan --> MExec
MExec --> Merged
Merged --> Clean
Effect[11. Part 수 감소 <br/> → Granule 스캔 감소 <br/>→ 쿼리 성능 향상]
Merged --> Effect
사용자가 DB를 만들면, ClickHouse는 내부 디렉토리 구조를 초기화합니다.
테이블 정의를 위한 DDL 정보가 Catalog 수준에서 반영됩니다.
ENGINE = MergeTree 계열 테이블이 생성되면 ClickHouse는 다음 정보를 포함한 메타를 준비합니다.