본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 23.2 Release note 요약

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

목적

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

 

읽기 전에

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

 

Upgrade Notes

  • -

 

Backward Incompatible Change

  • toDayOfWeek 함수의 사용법이 확장되었고 다른 날짜 함수와의 호환성을 위해 사용법이 toDayOfWeek(time, time_zone) > toDayOfWeek(time, 0, time_zone) 으로 변경됨
  • max_query_cache_sizes 파라미터명이 filesystem_cache_max_download_size로 변경됨
  • 이제 default 계정은 SHOW NAMED COLLECTION 권한이 기본적으로 부여되지 않음
  • SETTINGS 항목이 FORMAT 항목 전에 명시되어도 정상 적용됨
  • materialized_postgresql_allow_automatic_update 파라미터가 제거됨(기본값으로 off였음)
  • 실제적인 데이터셋에 대한 countDigits 함수의 성능이 약간 개선됨. 이전에는 countDigits(0)은 0을 반환하였지만 이제 countDigits(0)은 1을 반환함
  • 코덱 Delta와 DoubleDelta 또는 Gorilla와 FPC의 조합으로 압축된 신규 컬럼 생성이 불가함. 이 것은 allow_suspicious_codecs = true 설정으로 우회할 수 있음

 

New Feature

  • storage 설정을 storage_policy 대신 SETTINGS disk = '<disk_name>' 으로 설정할 수 있음
  • system.part_log에 ProfileEvents counters를 노출함
  • 중복 삽입에 대한 ReplacingMergeTree의 성능을 강화함
  • system.replication_queue에 last_exception_time 컬럼이 추가됨
  • 윈도우 함수로 ntile이 지원됨
  • 모든 테이블에 FINAL 수정자를 암시적으로 적용할수 있도록 final 설정이 추가됨
  • arrayPartialSort, arrayPartialReverseSort 함수가 추가됨
  • 가장 바깥쪽 JSON 배열의 요소 수를 반환하는 JSONArrayLength 함수가 추가됨. 이 함수는 입력 JSON 문자열이 유효하지 않은 경우 NULL을 반환함

 

Bug Fix

  • Delta 또는 DoubleDelta가 Gorilla 코덱과 조합할 경우 데이터 충돌이 일어나는 버그가 수정됨
  • grouping sets에 대한 predicate push down의 잘못된 동작이 발생하는 버그가 수정됨
  • ORDER BY에 상수 값을 사용하면 충돌이 발생하는 버그가 수정됨

 

Improvement

  • 주키퍼 세션이 끊긴 경우 기본적으로 삽입에 대한 재시도가 활성화됨
  • final 구문이 포함된 쿼리에 대해 정렬 키와 함께 where 항목이 prewhere로 이동하는 최적화가 지원됨
  • interserver DNS 에러에 대한 재시도가 추가됨
  • 빈 패스워드가 잘못되었을 경우 clickhouse-client 툴이 대화형으로 패스워드를 물어봐줌
  • replication_alter_partitions_sync 파라미터명이 alter_sync로 변경됨
  • generateRandom 테이블 함수와 엔진이 이제 LowCardinality 데이터 타입을 지원함
  • "query result cache" 가 "query cache" 로 네이밍 변경됨
  • SYSTEM SYNC FILE CACHE 커맨드가 추가됨. 이는 sync 시스템 호출을 수행함
  • 테이블 함수의 인자가 named collection으로 명시되면 로그 내 비밀번호를 숨김
  • generateRandom 함수가 Map, IPv4, IPv6 타입을 지원함
  • IP 타입에 대하여 empty/notEmpty를 지원함
  • system.tables 테이블에 parts, active_parts, total_marks 컬럼이 추가됨
  • distribution_queue 테이블에 last_exception_time 컬럼이 추가됨
  • 서버 시작 시 named collection을 로드하지 않고 처음 접근시 로드함

 

Performance Improvement

  • 파티션 키와 group by 키가 호환될 경우 파티션을 독립적으로 집계할 수 있도록 allow_aggregate_partitions_independently 파라미터가 추가됨. 기본 값은 off임
  • Compact 형식의 파트와 수직 병합 알고리즘을 사용할 수 있도록 허용됨. 이로써 백그라운드 동작에 더 적은 메모리를 클릭하우스 서버가 사용함
  • 논리적으로 동등한 경우 if 표현식에 대한 집계 함수를 다음과 같이 재작성할 수 있음. avg(if(cond, col, null)) > avgIf(cond, col). 이 것은 성능에 도움이 됨
  • 32개 이상의 코어가 있고 SMT가 비활성화된 시스템에서 clickhouse가 코어의 절반만 사용한다는 제한이 제거됨(BIOS에서 하이퍼스레딩을 비활성화한 경우)
  • multiIf 함수에 대하여 컬럼 지향 실행시 속도 개선이 2.3배까지 적용됨
  • query_plan_remove_redundant_sorting 최적화가 기본적으올 활성화됨
  • HTTP 인터페이스를 사용하여 큰 쿼리의 성능이 개선되도록 HTTP Transfer Encoding 청크 사이즈가 증가됨
  • Array/Map/Nested 컬럼의 큰 수와 함께 테이블을 읽는 짧은 조회 쿼리의 성능이 개선됨
  • arrayExists(x → x = -1, arr) - has(arr, 1)로 재작성하면 쿼리 성능이 1.34배 개선됨
  • 쿼리(서브쿼리) 내 중복된 DISTINCT 항목을 제거함. 이는 쿼리 플랜의 상위에서 구현됨
  • 몇 가지 쿼리 재작성 최적화가 이루어짐
    • sumIf(123, cond) → 123 * contIf(1, cond)
    • sum(if(cond, 123, 0)) → 123 * countIf(cond)
    • sum(if(cond, 0, 123)) → 123 * countIf(nod(cond))

 

Experimental Feature

  • -

 

Build/Testing/Packaging Improvement

  • -

 

참고

728x90
반응형