본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 21.6 Release note 요약

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

목적

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

 

읽기 전에

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

 

Backward Incompatible Change

  • Ver. 21.6
    • uniqState, uniqHLL12State, uniqCombinedState, uniqCombined64State가 UUID 타입과 호환되지 않음

 

Upgrade Notes

  • Ver. 21.6
    • UUID 타입의 값은 integer 타입과 비교될 수 없음. 예를 들어 uuid != 0이 아닌 uuid != '00000000-0000-0000-0000-000000000000'로 해야 함

 

New Feature

  • Ver. 21.6
    • PostgreSQL과 같은 캐스팅 연산자로 ::가 추가됨. 예를 들어 [1, 2]::Aray(UInt8), 0.1::decimal(4, 4)이 가능함
    • 다음과 같은 big integer 관련 기능이 지원되며 LowCardinality(UUID)가 지원됨
      • UInt128 데이터 타입이 지원됨
      • dictionaries에 big integers가 지원됨
      • gcd/lcm 함수에 big integers가 지원됨
      • 배열 검색이나 조건부 함수에 big integers가 지원됨
      • generateRandom 테이블 함수와 clickhouse-obfuscator에 big integers가 지원됨
    • table comment가 구현됨
    • system.stack_trace 시스템 테이블에 thread_name 열이 추가됨
    • insert_null_as_default=1일 경우 INSERT ... SELECT와 INSERT ... SELECT ... UNION ALL ... 쿼리에 NULL 대신 기본 값이 삽입됨
    • clickhouse-local에 --progress 옵션이 추가되어 진행 상황을 알 수 있는 기능이 추가됨
    • SYSTEM QUERY RELOAD MODEL, SYSTEM QUERY RELOAD MODELS가 추가됨
    • EXPLAIN PLAN 쿼리에 json(boolean이며 기본적으로 0) 옵션이 추가됨. 활성화할 경우 단일 JSON형식으로 출력되며 TSVRaw 형식에 유용함
    • MergeTree* 테이블에 대해 EXPLAIN PIPELINE 쿼리에 INDEXES(boolean이며 기본적으로0) 옵션이 추가됨. 활성화되면 사용된 인덱스와 각각의 인덱스에 필터된 parts, granules의 수를 알 수 있음

 

Bug Fix

  • Ver. 21.6
    • SYSTEM RESTART REPLICA 혹은 SYSTEM SYNC REPLICA 쿼리 수행이 영원히 지속되는 버그가 수정됨. 이는 매우 적은 RAM으로 서버가 구동중일 때 발생하던 버그임
    • 쿼리 실행  도중 HDFS에 접근할 수 없게 되어 서버가 비정상적으로 종료되는 버그가 수정됨
    • SELECT ... FINAL 쿼리에 대한 EXPLAIN PIPELINE이 잘못된 pipieline을 표시하는 버그가 수정됨
    • ALTER 쿼리가 replica의 다운타임 동안 수행된 경우 오래된 replica에 의해 metat updates가 무시되는 버그가 수정됨
    • UNION 사용시 filter-pushdown 최적화 후에 "Block structure mismatch" 에러가 발생할 수 있는 버그가 수정됨

 

Improvement

  • Ver. 21.6
    • MergeTree 테이블군에 _partition_value 가상 컬럼이 추가됨. 이를 통해 결정적인 방법으로 파티션 pruning할 수 있음. 이 것은 mutation에 대해 partition matcher를 구현하는데 필요함
    • prefer_column_name_to_alias=1 가 GROUP BY, HAVING, ORDER BY에 사용되는 열 이름 또한 선호하도록 변경됨
    • DateTime64로 ORDER BY WITH FILL이 지원됨
    • 서버 시작 시 OS 이름, 커널 버전, CPU 아키텍처에 대한 정보도 기록(log)함
    • system.distribution_queue 시스템 테이블에 broken_data_files, broken_data_compressed_bytes 열이 추가됨. 마크된 분산 테이블에 비동기 삽입에 대한 파일의 수를 나타내는 BrokenDistributedFilesToInsert 열이 추가됨
    • system.tables 쿼리는 더이상 주키퍼로 이동하지 않음(주키퍼에서 인지를 못한다는 것인지?)
    • 분산 테이블의 하위 컬럼을 읽을 수 있게 됨
    • Kafka 엔진에서 Parquet 형식이 지원됨

 

Performance Improvement

  • Ver. 21.6
    • sum, count, avg 함수의 융합으로 sumCount 함수가 지원됨. 이 수는 optimize_fuse_sum_count_avg 파라미터에 의해 제어가 됨. 해당 함수는 sum과 count 두 열의 튜플로 값이 반환됨
    • Buffer 엔진 사용시 total_bytes/total_rows에 대해 락을 습득하지 않음으로써 성능 개선이 됨

 

Experimental Feature

  • Ver. 21.6
    • MergeTree* 테이블에 PROJECTION이 추가됨

 

Build/Testing/Packaging Improvement

  • Ver. 21.6
    • -

 

참고

728x90
반응형