본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 21.8 Release note 요약

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

목적

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

 

읽기 전에

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

 

Upgrade notes

  • Ver. 21.8
    • system.query_log, system.query_thread_log, system_processes, system.opentelemetry_span_log 시스템 테이블은 이제 Map 데이터 타입을 사용함. 이 테이블은 Map 데이터 타입으로 자동 생성되며 이전 버전과의 호환성을 위해 가상 컬럼이 생성됨

 

Backward Incompatible Change

  • Ver. 21.8
    • -

 

New Feature

  • Ver. 21.8
    • SQL/JSOn 표준의 part에 대한 지원이 추가됨
    • system.asynchronous_metrics, system.asynchronous_metric_log 시스템 테이블에 아래와 같은 공통 시스템 메트릭이 추가됨. 또한 sheduling jitter와 메트릭을 모으는데 소모된 시간이 메트릭으로 추가됨
      • CPU usage
      • disk usage
      • memory usage
      • IO
      • network
      • files
      • load average
      • CPU frequencies
      • thermal sensors
      • EDAC conters
      • system uptime
    • MaterializedPostgreSQL 테이블 엔진과 데이터베이스 엔진이 추가됨. 이 데이터 베이스 엔진은 모든 데이터베이스 혹은 데이터베이스 테이블의 어떤 하위 집합에 대한 복제가 가능함
    • leftPad(), rightPad(), leftPadUTF8(), rightPadUTF8() 함수가 추가됨
    • indices list의 시작 부분에 인덱스가 추가될 수 있도록 ADD INDEX 명령어에 FIRST 키워드가 추가됨
    • data skipping indices가 존재하는지에 대한 정보를 포함하는 system.data_skipping_indices 시스템 테이블이 추가됨
    • DISTINCT ON (columns) 표현이 지원됨
    • 사용자 지정 설정을 기본값으로 재설정하고 테이블의 metadata에서 제거하는 기능이 추가됨. 이는 system/config의 기본 값을 모른채로 변경값을 롤백할 수 있음

 

Bug Fix

  • Ver. 21.8
    • 삭제된 유저로 로그인 시 충돌이 발생할 수 있는 버그가 수정됨
    • 손실된 replica 복구 시 드물게 분기가 될 수 있는 버그가 수정됨
    • system.stack_trace 시스템 테이블 내 thread_name 열의 과도한 개행이 발생하는 버그가 수정됨
    • 주키퍼 클라이언트 내 abort로 드물게 서버가 충돌하는 버그가 수정됨
    • right 서브쿼리 조인 시 일부 경우에 thread 수를 잘못 평가하는 버그가 수정됨
    • 백그라운드 pool이 꽉찰 경우 백그라운드 작업에 대한 과도하게 긴 backoff가 발생하는 버그가 수정됨
    • ReplicatedMergeTree 테이블에 DROP PART 쿼리 시 드물게 "Unexpected merged part intersecting drop range" 에러가 발생하는 버그가 수정됨

 

Improvement

  • Ver. 21.8
    • empty, notEmpty 함수에 대한 UUID 타입의 인자라 지원됨. UUID는 모든 값이 0일 경우(nil UUID) empty임
    • MySQL 플토콜에 SET SQL_SELECT_LIMIT이 추가됨
    • optimize_move_to_prewhere_if_final 파라미터가 추가됨. 만약 쿼리가 FINAL을 포함할 경우 move_to_prewhere 최적화는 optimize_move_to_prewhere과 optimize_ove_to_prewhere_if_final이 모두 활성화되어야 진행됨
    • Nested 데이터 타입에 Unicode 요소(예를 들어 Chinese, Cyrillic 등) 지원이 추가됨
    • "null"이라는 컬럼명(백틱이나 쌍따옴표로 명시되어야 함)을 사용할 수 있음. ON CLUSTER에서도 마찬가지로 가능함
    • JSONExtract에 LowCardinality, Deciaml, UUID에 대한 지원이 추가됨
    • 비어있는 part의 백그라운드 삭제 혹은 DROP PART 후 part가 교차할 수 있는 버그가 수정됨
    • ReplicatedMergeTree 테이블에서 손실된 part에 대해 개선됨. ReplicationQueue 내 드물게 발생하는 비정합성이 수정됨
    • 읽을수 없는 working 폴더로 clickhouse-client 시작이 허용됨
    • ALTER TABLE ... DETACH와 백그라운드 병합 사이의 논리적 경합 상태 가능성이 수정됨
    • 클라이언트가 데이터 삽입 시 소모된 대기 시간을 올바르게 포함하도록 NetworkReceiveElapsedMicroseconds 지표가 변경됨
    • S3 및 HDFS에 TRUNCATE TABLE이 지원됨
    • 병합, mutation, fetch 등의 백그라운드 job 수행에 대해 pool 내 thread의 수를 바꾸기 위한 설정의 동적 reload가 지원됨
    • JSONExtract를 사용하여 문자열이 아닌 요소를 문자열로 추출이 가능함
    • "sudo service clickhouse-server start"가 Centos 8과 같은 systemd가 있는 시스템에서 동작하도록 변경됨

 

Performance Improvement

  • Ver. 21.8
    • 많은 컬럼으로 이루어진 테이블을 읽는 짧은 쿼리의 대기 시간이 개선됨

 

Experimental Feature

  • Ver. 21.8
    • -

 

Build/Testing/Packaging Improvement

  • Ver. 21.8
    • -

 

참고

728x90
반응형