본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 21.5 Release note 요약

by 연습장이 2024. 4. 13.
728x90
반응형

목적

  • upgrade에 따른 데이터 정합성, 성능 간 이슈 등을 사전에 체크하여 장애 발생을 방지
  • 지속적으로 dbms 생명주기를 관리하여 신기술에 대한 인지 및 도입 방안 마련

 

읽기 전에

  • 아래 내용은 Release note 내용 중 필요하다고 판단되는 부분 위주로 정리함
  • 버전의 A.B 에서 A는 년(ex_ 20의 경우 2020년)을 의미하며 B는 월(ex_ 6의 경우 6월)을 의미함. 즉, 버전에서 Release date를 유추할 수 있음
  • 중복된 내용의 경우 가장 낮은 버전(이전 버전)에서 최초 기입하며 이후 중복 기입하지 않음

 

Backward Incompatible Change

  • Ver. 21.5
    • float와 integer 숫자의 비교가 변경됨. 이전에는 예를 들어 12.0과 12를 비교하면 이전에는 true였으나 이제 false로 변경됨. 이는 CPU모델에 따라 다른 값을 반환하기 때문에 정합성을 위해 변경되었기 때문.
    • 단일 Tuple 인자에 대한 argMin, argMax의 지원이 제거됨

 

New Feature

  • Ver. 21.5
    • ALTER TABLE ... FETCH PART ... 쿼리가 추가됨. 이는 FETCH PARTITION과 유사하나 오직 하나의 part가 대상임
    • 분산 테이블에 대한 재귀적 쿼리의 깊이를 제한하는 max_distributed_depth 파라미터가 추가됨

 

Bug Fix

  • Ver. 21.5
    • input_format_with_names_use_header 파라미터를 비활성화하면 CSVWithNames 형식의 모든 입력이 삭제되는 버그가 수정됨
    • Distributed에 삽입시 "Cannot schedule a task" 에러가 발생할 수 있는 버그가 수정됨
    • escape sequence가 있는 일부 LIKE 표현식이 잘못 동작하는 버그가 수정됨
    • restart, stop 명령어가 행이 걸리는 버그가 수정됨
    • 이 컬럼이 ReplcaingMergeTree의 파라미터로 쓰이고 해당 컬럼의 기본값을 바꿀 때 충돌하는 버그가 수정됨
    • CAST([] AS Array(Array(String)))와 같이 비어있는 array literal에서 1보다 큰 차원으로 캐스팅할 수 없는 버그가 수정됨
    • 가상 컬럼을 기반으로 파티션 pruning할 때 호환되지 않는 상수 표현이 발생하는 버그가 수정됨
    • ReplicatedMergeTree 테이블의 생성과 삭제 사이에 매우 드물게 경쟁 상태가 발생하는 버그가 수정됨
    • data_type_default_nullable 파라미터가 default profile 태그 내 활성화되었을 때 서버가 시작되지 못할 수 있는 버그가 수정됨
    • 현재 커넥션 수를 잘못 세어 충돌이나 shutdown이 발생하는 버그가 수정됨
    • Atomic database에서 Materialized View를 detach 했다가 attach할 때 "Table .inner_id... doesn't exist" 에러가 발생되는 버그가 수정됨
    • OOM 예외 발생시 주키퍼 요청에 행이 걸릴 수 있는 버그가 수정됨
    • ReplicatedMergeTree 테이블 엔진에서 몇몇 replica의 mutation 대기가 수정됨. 이전에는 다른 replica에서 실행되기 전에 mutation/alter 쿼리가 완료되었음
    • 클라이언트가 매우 일찍 연결을 닫으면 충돌이 발생하는 버그가 수정됨
    • TSV 형식의 끝에서 개행 없이 비어있는 문자열에 대한 역직렬화가 수정됨
    • Merge 조인 알고리즘에서 LowCardinality 타입 컬럼의 잘못된 형변환이 발생하는 버그가 수정됨
    • Merge 테이블 엔진에서 조인과 집계가 사용된 쿼리를 수행할 때 "unknown column" 에러가 발생하는 버그가 수정됨
    • pushdown 최적화에서 이름 충돌이 발생하는 버그가 수정됨. 이는 FULL JOIN 후 where 필터에서 잘못된 수행을 하였음

 

Improvement

  • Ver. 21.5
    • HTTP 인터페이스 내 URL의 최대 크기를 기본적으로 1MiB 로 증가시킴
    • background_fetches_pool_size를 8로 설정하여 빈번한 작은 삽입과 느린 주키퍼 클러스터에 대해 서비스 단계에서 더 성능이 개선됨
    • non-replicated MergeTree 삽입 중복 제거에 대해 non_replicated_deduplication_window 파라미터가 추가됨
    • 분산 쿼리에 대해 OS thread의 더 적은양을 사용하도록 async_socket_for_remote가 기본적으로 활성화됨
    • 노드가 하나인 클러스터에 대해 optimize_skip_unused_shards를 사용하지 않음
    • 버퍼 테이블에 대해 백그라운드에서만 버퍼 플러시 기능이 추가됨
    • ReplicatedMergeTree에 대해 max_part_removal_threads를 고려함
    • 버퍼 상의 락을 기다리는 동안 얼마나 시간을 소모했는지 추적하는 메트릭 지표가 추가됨
    • VIEW 정의에 CTE를 사용할 수 있음
    • 분산 테이블에서 보내는 데이터의 블록 구조를 올바르게 체크함

 

Performance Improvement

  • Ver. 21.5
    • 기본 프로토콜을 통해 localhost와 상호작용할 때(clickhouse-client와 혹은 분산 쿼리로 서버 to 서버로) 기본적으로 압축이 비활성화됨. 이는 일부 import/export 기능에 대한 성능을 개선하기 위함임
    • 분산 쿼리에서 IN 연산자의 오른쪽에 샤드에 속하지 않는 값이 제외됨

 

Experimental Feature

  • Ver. 21.5
    • -

 

Build/Testing/Packaging Improvement

  • Ver. 21.5
    • -

 

Contents that needs to be tested

  • Ver. 21.5
    • -

 

참고

728x90
반응형