728x90
반응형
목적
- upgrade에 따른 데이터 정합성, 성능 간 이슈 등을 사전에 체크하여 장애 발생을 방지
- 지속적으로 dbms 생명주기를 관리하여 신기술에 대한 인지 및 도입 방안 마련
읽기 전에
- 아래 내용은 Release note 내용 중 필요하다고 판단되는 부분 위주로 정리함
- 버전의 A.B 에서 A는 년(ex_ 20의 경우 2020년)을 의미하며 B는 월(ex_ 6의 경우 6월)을 의미함. 즉, 버전에서 Release date를 유추할 수 있음
- 중복된 내용의 경우 가장 낮은 버전(이전 버전)에서 최초 기입하며 이후 중복 기입하지 않음
Backward Incompatible Change
- Ver. 21.2.2.8
- Bitwise 함수(bitAnd, bitOr 등)는 float 타입을 인자로 사용할 수 없음. 이 경우 integer로의 명시적 형변환이 필요함
- float 타입에 대해 lcm과 gcd(최소공배수, 최대공약수) 함수가 금지됨
- float 타입의 컬럼은 파티션 키로 허용되지 않음
New Feature
- Ver. 21.2.2.8
- PostgreSQL 테이블 엔진이 추가됨. select와 insert 모두 가능하며 다차원 배열도 지원됨. 또한 PostgreSQL dictionary source와 PostgreSQL database 엔진도 추가됨
- Nested 데이터 타입이 임의 수준의 중첩을 지원함. Array 내 size0, null in Nullable, Tuple elements 내 names 등의 복잡한 유형의 하위 컬럼을, 전체 컬럼을 읽지 않고 읽을 수 있음
- system.distributed_ddl_queue 시스템 테이블이 추가됨
- insert into 테이블 함수인 cluster를 지원. remote 및 cluster 함수에 대해 샤딩 키를 명시하여 노드 간 데이터 분배를 지원
- 수학 함수인 sign이 추가됨
- system.query_log 시스템 테이블에 사용된 기능(function, table engine 등)에 대한 정보가 추가됨
- map 타입과 관련된 함수 3개가 추가됨
- mapContains(map, key) : key가 포함된 map.key가 있는지 체크함
- mapKeys(map) : map의 배열에 모든 키를 반환함
- mapValues(map) : map의 배열에 포함된 모든 값을 반환함
- EXISTS VIEW 구문이 추가됨
- SELECT ALL 구문이 추가됨
Bug Fix
- Ver. 21.2.2.8
- Int32를 제외한 다른 정수 형식에 대해 인수형식이 Nullable(T)인 경우 fromModifiedJolianDay 함수의 부분적 결함이 수정됨
- mutation과 같은 복제 operation가 일부 parts는 드물게 처리할 수 없었던 버그가 수정됨
- ON CLUSTER 쿼리를 수행하던 백그라운드 thread가 삭제된 복제 테이블에 대해 행이 걸릴 수 있었던 버그가 수정됨
- "Extremes transform was already added to pipeline" 에러가 발생할 수 있는 버그가 수정됨
- 쿼리 플랜의 표현식 단계에서 병합함으로써 발생되었던 "QueryPipeline stream: different number of columns" 예외가 발생할 수 있었던 버그가 수정됨
- 서버가 메모리가 없을 때 드물게 충돌이 발생하던 버그가 수정됨
Improvement
- Ver. 21.2.2.8
- 분산 쿼리에서 만약 async_socket_for_remote가 활성화되었고 Array(Array(Array(...more...))과 같은 중첩된 데이터 타입이 사용되었을 경우, 적어도 debug build configuration 단계에서 스택 오버 플로우가 발생될 수 있었음. 이러한 버그를 방지하기 위해 과도한 괄호 중첩이 더이상 지원되지 않음
- RabbitMQ와 Kafka에 대한 별도의 message borkers 공간(pool)이 추가됨
- 읽기 시 checksum에 대한 유효성을 비활성화하는 옵션이 추가됨. 이는 운영단계에서는 쓰지 말아야 하며 테스트나 벤치마크에서 사용할 것을 권장함. 이 설정은 MergeTree family에 적용되며 성능 관점에서는 0.% 이내로 미미함
- mulif 함수에 상수 결과 반환이 지원됨
- Map 데이터 타입에 length, empty, notEmpty 함수가 지원됨, 이는 Map에서 키 갯수를 반환함
- clickhouse-benchmark에 --reconnect 옵션이 추가됨. 이 옵션이 명시될 경우 모든 요청 전에 재연결됨
- toIPv6 함수가 IPv4 주소를 파싱할 수 있음
- system.query_log, sstem.processes 등 시스템 테이블에 http_referer 열이 추가됨
- MergeTree parts(예를 들어 Wide, Compact, InMemory) 타입에 대한 metric 지표가 추가됨
- 서버 재시작 없이 max_server_memory_usage 파라미터 값을 변경할 수 있음
- 특정한 NaN 인자를 사용하여 bar 함수를 호출하였을 경우 약간의 잘못된 동작이 수행(막대기 모양이 약간 달라진듯)되는 버그가 수정됨
- 매우 큰 문자열의 데이터를 삽입할 때 "PeekableReadBuffer: Memory limit exceed" 에러가 발생되는 버그가 수정됨
- CTE(Common Table Expressions)의 alias를 추가로 지정할 수 있음. enable_global_with_statement가 활성되었을 경우 같은 레벨의 서브쿼리에 CSE(Common Subexpressions Elimination)를 전파할 수 있음
- 예기치 않은 예외가 발생할 경우, 분산 DDL 쿼리 수행 중이던 백그라운드 thread가 재시작됨
- LIVE VIEW 생성 시 WITH ... [AND] [PERIODIC] REFRESH [interval_in_sec] 항목을 추가할 수 있음
Performance Improvement
- Ver. 21.2.2.8
- 이전에 존재했던 최적화를 반환하여, 시스템 통계 호출의 수를 줄여 parts 제거를 더욱 빠르게 함
- WITH 구문에서 선언된 Aliases가 인덱스 분석에 적절히 사용됨. 이를 통해 WITH column AS alias SELECT ... WHERE alias = ... 명령어가 인덱스를 사용할 수 있음
- optimize_alias_column_prediction이 추가되며 기본적으로 동작함. 이는 다음을 존중함(고려한다는 뜻인듯)
- 보조 인덱스를 사용하여 데이터를 스킵하고, 파티션 pruning 시 WHERE 절에서 aliased 열을 존중함
- optimize_trivial_count 파라미터에 대해 trivial count queries 시 WHERE 절에서 aliased 열을 존중함
- optimize_aggregation_in_order 및 optimize_read_in_order 파라미터에 대해 GROUP BY 및 ORDER BY 시 aliased 열을 존중함
- 논리적으로 동일하면 sumIf()와 sum(if()) 함수를 countIf() 함수로 재작성함
- 공간 절약을 위해 문자열 컬럼에 대해 더 나은 압축의 zstd long option을 지원함
- 모든 연결에 대해 설정 접근을 제거함으로써 서버 지연에 대한 약간의 개선이 이루어짐
- Buffer 엔진에 대한 여러 layers의 락 경합이 감소됨
- 쿼리 플랜의 필터링 단계가 표현식 + 필터 쌍으로 나누어 지원됨. 표현식 + 표현식 병합 최적화와 함께 이 것은 필터링 단계 이후 일부 표현식의 실행이 지연될 수 있음
Experimental Feature
- -
Build/Testing/Packaging Improvement
- -
Contents that needs to be tested
- -
참고
- clickhouse change log doc_001
https://clickhouse.com/docs/en/whats-new/changelog/
728x90
반응형
'CDBMS > Clickhouse' 카테고리의 다른 글
[Clickhouse] Ver. 21.4 Release note 요약 (0) | 2024.04.12 |
---|---|
[Clickhouse] Ver. 21.3 Release note 요약 (0) | 2024.04.11 |
[Clickhouse] Ver. 21.1 Release note 요약 (0) | 2024.01.08 |
[Clickhouse] Ver. 20.12 Release note 요약 (0) | 2024.01.07 |
[Clickhouse] Ver. 20.11 Release note 요약 (0) | 2023.12.24 |