LLM WikiAccess-protected knowledge portal

WIKI

ClickHouse 26.7: 역대 최대 성능 최적화 릴리스 — 운영자가 먼저 확인할 호환성 경계와 변화

왜 26.7인가 2026년 7월 22일, ClickHouse v26.7.1.1315 stable이 출시됐다. 64개의 신규 기능, 117개의 성능 최적화, 329개의 버그 수정 이 담긴 이 릴리스는 ClickHouse 역사상 단일 릴리스로는 최다 성능 최적화 건수를 기록했다. 26.6이 10주년 기념 릴리스 가상 스킵 인덱스, 연속 쿼리 실험 지원, 3× 딥 네스트 쿼리 레이턴시 개선 였다면, 26.7은 성능과 안정성을 전면적

경로human/study/content/database-frontier/43-clickhouse-26-7-performance-optimizations-operator-checklist.md
카테고리Study
태그#checklist #clickhouse #mysql #operator #optimizations #performance #study

왜 26.7인가

2026년 7월 22일, ClickHouse v26.7.1.1315-stable이 출시됐다. 64개의 신규 기능, 117개의 성능 최적화, 329개의 버그 수정이 담긴 이 릴리스는 ClickHouse 역사상 단일 릴리스로는 최다 성능 최적화 건수를 기록했다.

26.6이 10주년 기념 릴리스(가상 스킵 인덱스, 연속 쿼리 실험 지원, 3× 딥 네스트 쿼리 레이턴시 개선)였다면, 26.7은 성능과 안정성을 전면적으로 강화한 여름 릴리스다.

운영자 입장에서 이 릴리스는 두 가지 이유로 중요하다. 첫째, 여러 하위 호환성이 깨지는 변경사항이 포함됐다. 오작동이 아닌 설계된 변경이기 때문에, 업그레이드 전에 반드시 확인해야 한다. 둘째, 일부 성능 개선은 설정 기본값이 바뀌는 형태로 적용된다. 기존 클러스터가 영향받을 수 있다.


하위 호환성 경계: 업그레이드 전 필수 확인

ClickHouse 26.7 변경 영역 지도 ⚠ 하위 호환성 변경 • S3 클라우드 자격증명 자동 해석 중지 • **/ glob 패턴 의미 변경 • zip/zipx 오브젝트 스토리지 백업 거부 • 워크로드 스케줄링 설정 섹션 제거 • Snowflake 변환 함수 완전 제거 • use_legacy_to_time 기본값 0으로 ✨ 주요 신규 기능 • EXPLAIN ANALYZE (실제 실행 메트릭) • groupFormat 집계 함수 • 텍스트 인덱스 postprocessor 인자 • GeoJSON 출력 포맷 • Web UI 쿼리 탭 (세션 간 유지) • dotProductTransposed (벡터 내적) 🚀 성능 최적화 하이라이트 • JOIN 런타임 필터 → 기본키·스킵 인덱스 프루닝 • 프로파일 이벤트 카운터: ~30× 빠른 CPU 원자 연산 • libdeflate gzip/zlib: 1.15~1.5× 빠름 • Delta 코덱 벡터화 압축 해제: 1.5~5× 빠름 • JOIN 해시 테이블: 메모리 15%↓, 속도 12%↑ • AArch64 ZSTD 벡터화: ~2.3× 빠름 DateTime64 범위 확장 이전: [1900-01-01, 2299-12-31] 이후: [0000-01-01, 9999-12-31] 범위 외 계산 오류 수정 포함 AggregatingMergeTree 검증 생성 시 스키마 유효성 검사 추가 정렬키 또는 집계 상태 컬럼이어야 기존 테이블은 영향 없음 🧪 실험적 기능 • Quantize 벡터 코덱 패밀리 + QBit (Int8) • SZ3 오차 허용 손실 압축 코덱 • Iceberg 매니페스트 파일 컴팩션 (OPTIMIZE TABLE ... MANIFEST) 📊 관측성·백업·시스템 테이블 개선 • 실행 단계별 ProfileEvents (파싱·분석·플래닝·파이프라인 빌딩) • 백업 메타데이터 스트리밍 파싱 (멀티 GB DOM 트리 방지) • system.completions 테이블 (클라이언트 자동완성)
ClickHouse 26.7 주요 변경 영역

하위 호환성 변경 상세

S3 자격증명 자동 해석 중지

가장 넓은 영향을 미칠 수 있는 변경이다. 이전까지 서버 SQL은 s3() 함수나 S3 디스크 설정에서 서버의 클라우드 자격증명을 자동으로 해석했다. 26.7부터는 명시적 자격증명 또는 NOSIGN을 지정해야 한다.

Named collections에서 use_environment_credentials의 기본값이 0으로 변경됐다. 기존에 이 설정을 명시하지 않고 IAM 역할이나 환경 변수로 인증하던 파이프라인은 업그레이드 후 즉시 실패한다.

조치: 업그레이드 전 SELECT * FROM system.named_collections로 S3 관련 named collection을 확인하고, use_environment_credentials = 1을 명시적으로 추가한다. 또는 자격증명을 직접 지정한다.

**/ glob 패턴 의미 변경

파일 경로 매칭에서 data/**/file.txt가 이전에는 data/file.txt를 매칭하지 않았지만, 26.7부터는 같은 디렉토리 레벨도 매칭한다. 재귀 파일 조회 쿼리가 예상보다 더 많은 파일을 가져올 수 있다.

zip/zipx 백업 포맷 제한

오브젝트 스토리지(S3, Azure Blob 등)에 저장하는 백업에 zip/zipx 포맷 사용이 거부된다. tar 기반 포맷으로 전환해야 한다. 로컬 디스크 백업은 영향 없다.

워크로드 스케줄링 설정 섹션 제거

XML 설정의 resources, workload_classifiers 섹션이 제거됐다. 대신 CREATE RESOURCE, CREATE WORKLOAD DDL을 사용해야 한다. 기존 XML 기반 워크로드 설정을 사용하는 클러스터는 설정을 마이그레이션해야 한다.

Snowflake 변환 함수 제거

snowflakeToDateTime, snowflakeToDateTime64, 그 역함수들이 완전히 제거됐다. v24.6부터 deprecated 됐던 함수들이다. Snowflake ID ↔ DateTime 변환을 사용하는 쿼리는 수정이 필요하다.

use_legacy_to_time 기본값 변경

toTime() 함수가 기존에는 날짜를 고정값으로 변환했지만, 이제 기본적으로 Time 타입으로 변환한다. 기존 동작이 필요하면 SET use_legacy_to_time = 1을 명시한다.


성능 최적화 주요 내용

JOIN 성능 개선

JOIN 런타임 필터가 기본키와 스킵 인덱스를 활용해 불필요한 그래뉼 읽기를 줄인다. 대규모 팩트 테이블과 소규모 디멘션 테이블의 조인에서 유의미한 개선이 기대된다.

JOIN 해시 테이블이 8바이트 인덱스 참조를 사용하도록 변경됐다. 메모리가 약 15% 줄고 속도는 12% 향상된다. 인덱스 참조 방식이 바뀐 만큼 메모리가 풍부한 환경에서도 캐시 효율이 높아진다.

allow_aggregate_partitions_independently 설정이 기본 활성화됐다. 파티션 단위 독립 집계가 가능한 쿼리에서 추가 병렬화 이점을 얻는다. 기존에 이 설정을 비활성화하던 이유가 없다면 기본값을 유지한다.

압축·직렬화 성능

libdeflate 라이브러리가 gzip/zlib/deflate 처리에 사용된다. 기존 대비 1.15~1.5× 빠른 압축 해제 속도다.

Delta 코덱 압축 해제가 벡터화됐다. 고정 크기 컬럼, 낮은 카디널리티 컬럼에서 LZ4 압축 해제 성능이 개선된다. Delta 코덱을 많이 사용하는 시계열, 이벤트 로그 테이블에서 읽기 성능이 1.5~5× 향상된다.

문자열 처리

SIMD 기반 서브스트링 검색이 적용됐다. position, locate, positionCaseInsensitive 등 문자열 검색 함수에서 최대 1.5× 빠른 처리가 가능하다.

LLVM 컴파일이 단순 정규식 함수(match, extract, replaceRegexp)에 적용됐다. 비교적 단순한 패턴의 정규식 필터를 반복 실행하는 쿼리에서 개선이 관찰된다.

AArch64 전용 최적화

ZSTD 압축에 AArch64 벡터화가 적용됐다. 짧은 오프셋 복사에서 ~2.3× 빠른 속도다. AWS Graviton, Ampere Altra 인스턴스에서 의미 있는 개선이다.

프로파일링 오버헤드 감소

프로파일 이벤트 카운터가 CPU별 원자 연산으로 전환됐다. 카운터 증가 오버헤드가 ~30× 감소한다. 쿼리 프로파일링을 상시 활성화하는 클러스터에서 실질적인 처리량 향상이 나타날 수 있다.


신규 기능 운영 활용

EXPLAIN ANALYZE — 실제 실행 메트릭

기존 EXPLAIN 계열은 추정 실행 계획을 보여줬다. 26.7의 EXPLAIN ANALYZE실제 실행 결과와 성능 지표를 함께 반환한다. 쿼리를 실행하면서 각 연산자의 실제 처리 시간, 처리된 행 수, 메모리 사용량을 확인할 수 있다.

느린 쿼리 원인 분석에서 "계획 상 예상과 실제 실행의 차이"를 직접 확인하는 도구로 활용된다.

EXPLAIN ANALYZE
SELECT product_id, sum(sales)
FROM orders
WHERE dt >= '2026-01-01'
GROUP BY product_id
ORDER BY sum(sales) DESC
LIMIT 100;

groupFormat — 집계 결과 포매팅

groupFormat(col, format) 함수는 그룹 내 행을 지정된 출력 포맷으로 직렬화해 반환한다. 집계 결과를 JSON, CSV 등으로 인라인 변환할 때 유용하다.

텍스트 인덱스 postprocessor

텍스트 인덱스 생성 시 postprocessor 인자를 지정해 토큰 변환 로직을 적용할 수 있다. 어간 추출(stemming), 동의어 처리, 소문자 변환 등을 인덱스 레벨에서 처리한다. system.stemmers 테이블에서 지원되는 언어 목록을 확인할 수 있다.

GeoJSON 출력 포맷

ClickHouse 쿼리 결과를 GeoJSON으로 직접 출력하는 포맷이 추가됐다. 지오메트리 컬럼 매핑과 feature properties 지정을 지원한다. GIS 파이프라인과의 통합이 간소화된다.

Web UI 쿼리 탭 유지

Web UI에서 쿼리 탭이 세션 간에 유지된다. 브라우저를 재시작해도 이전 쿼리가 남아있다. 컬럼별 색상 코딩 시각화(bar, heatmap, categorical)와 /docs 경로의 빌트인 문서 검색도 추가됐다.


실험적 기능: 미리 파악해야 할 방향

벡터 양자화 코덱 (Quantize)

Quantize 벡터 코덱 패밀리와 QBit 타입(Int8 원소)이 추가됐다. 벡터 검색에서 재순위화(rescoring)를 통한 정밀도 보완과 함께 근사 내적 계산(dotProductTransposed)을 지원한다. Matryoshka 임베딩 처리를 위한 stride 파라미터도 포함됐다.

현재는 실험적이지만, ClickHouse를 벡터 검색 스토리지로 활용하는 방향으로의 진화가 명확하다.

SZ3 손실 압축 코덱

SZ3는 오차 범위를 지정하는 손실 압축 코덱이다. 부동소수점 시계열 데이터에서 허용 오차 범위 내에서 압축률을 크게 높일 수 있다. 과학 데이터, 센서 집계 데이터에 적합하다.

Iceberg 매니페스트 컴팩션

OPTIMIZE TABLE ... MANIFEST 구문으로 Iceberg 테이블의 매니페스트 파일을 컴팩션할 수 있다. 스몰 파일 문제와 매니페스트 메타데이터 증가 문제를 직접 제어하는 수단이다.

AI 함수 변경

aiEmbed 함수에서 model 파라미터가 위치 인자로 필수화됐다. 자격증명을 named collection 대신 설정이나 맵 인자로 전달하는 방식도 추가됐다.


업그레이드 체크리스트

26.7로 업그레이드하기 전 운영자가 확인해야 할 항목이다.

스토리지·인증

쿼리·함수

설정·스키마

성능 기본값 변화

현재 LTS 버전: ClickHouse 26.3 (2026년 LTS). 안정성을 최우선으로 하는 운영 환경은 26.3을 유지하고, 신기능이 필요한 경우에만 26.7로 전환을 검토한다.


마무리

ClickHouse 26.7은 숫자만으로도 규모를 증명하는 릴리스다. 117개의 성능 최적화는 단일 릴리스 기록이다. 그러나 운영자에게 더 중요한 것은 어떤 변경이 기존 파이프라인을 깨는가다.

S3 자격증명 자동 해석 중지와 워크로드 스케줄링 설정 제거는 묵시적으로 작동하던 것을 명시적으로 바꾼다. 이 방향이 운영 투명성을 높이지만, 업그레이드 전 검증 없이 적용하면 즉각적인 장애로 이어진다.

좋은 순서는 스테이징 → 단일 노드 또는 소규모 클러스터 → 전체 클러스터다. 26.7의 성능 개선을 누리려면 먼저 하위 호환성 경계를 통과해야 한다.

References