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
- -
참고
- clickhouse change log doc_001
https://clickhouse.com/docs/en/whats-new/changelog/
728x90
반응형
'CDBMS > Clickhouse' 카테고리의 다른 글
[Clickhouse] Ver. 23.4 Release note 요약 (0) | 2024.05.08 |
---|---|
[Clickhouse] Ver. 23.3 Release note 요약 (0) | 2024.05.06 |
[Clickhouse] Ver. 23.1 Release note 요약 (0) | 2024.05.04 |
[Clickhouse] Ver. 22.12 Release note 요약 (0) | 2024.05.03 |
[Clickhouse] Ver. 22.11 Release note 요약 (0) | 2024.05.02 |