728x90
반응형
목적
- upgrade에 따른 데이터 정합성, 성능 간 이슈 등을 사전에 체크하여 장애 발생을 방지
- 지속적으로 dbms 생명주기를 관리하여 신기술에 대한 인지 및 도입 방안 마련
읽기 전에
- 아래 내용은 Release note 내용 중 필요하다고 판단되는 부분 위주로 정리함
- 버전의 A.B 에서 A는 년(ex_ 20의 경우 2020년)을 의미하며 B는 월(ex_ 6의 경우 6월)을 의미함. 즉, 버전에서 Release date를 유추할 수 있음
- 중복된 내용의 경우 가장 낮은 버전(이전 버전)에서 최초 기입하며 이후 중복 기입하지 않음
Upgrade Notes
- SYSTEM RESTART DISK 쿼리가 더이상 동작하지 않음
- HASHED/SPARSE_HASHED 딕셔너리에 대한 PREALLOCATE 옵션이 더이상 동작하지 않음
- non-Float32 또는 non-Float64 타입의 컬럼에 대하여 Gorilla 코덱 사용이 더이상 지원되지 않음
- 만료된 구문으로 생성된 *MergeTree 테이블에 대하여 병렬 quorum 삽입이 부정확하게 동작할 수 있음. 따라서 쓰지말거나 신규 구문으로 생성할 것
Backward Incompatible Change
- -
New Feature
- 두 날자 또는 시간 값이 전체 단위 수로 표시된, 날짜 간의 차이를 계산하는 age 함수가 추가됨
- 명명된 튜플을 파싱하는 동안 JSON 객체 내 누락된 요소에 대한 기본값을 삽입함. 이 기능은 input_format_json_defaults_for_missing_elements_in_named_tuple 파라미터로 제어됨
- Kafka/RabbitMQ/NATS 엔진에 대해 하나의 메시지 내 행의 수를 max_block_size 파라미터로 제어할 수 있음. 세부적으로는 kafka_max_rows_per_message/rabbitmq_max_rows_per_message/nats_max_rows_per_message 로 제어할 수 있음
- system.text_log 테이블에 message_format_string 컬럼이 추가됨
Bug Fix
- "Invalid number of rows in Chunk" 예외 메시지가 발생하는 버그가 수정됨
- JOIN ON t1.x = t2.x AND 1 = 1의 잘못된 행동이 일어나는 버그가 수정됨. 이 것은 금지됨
- 만약 클러스터명이 명시되지 않으면 일부 SYSTEM .. ON CLUSTER 쿼리가 예상치 못한 방식으로 작동하는 버그가 수정됨
- system.parts나 system.parts_colujmns 테이블을 쿼리할 때 디스크 간 이동되는 파트의 존재가 있다면 해당 쿼리가 경쟁 상태에 놓이는 드문 버그가 수정됨
- UNION을 사용한 쿼리에서 "Different order of columns in UNION" 에러가 발생되는 버그가 수정됨
- 딕셔너리에 잘못된 구조(예를 들어 XML 설정에 올바르지 못한 타입 등)가 있을 경우 SELECT ... FROM system.dictionaries 쿼리 시 예외가 발생되는 버그가 수정됨
Improvement
- JSONExtract함수를 사용하여 JSON 내 문자열 타입으로 저장된 floats를 integers로 내부 변환할 수 있음. 예를 들어 JSONExtract('{"a": "1000.111"}', 'a', 'UInt64') -> 1000임. 예전에는 0으로 반환되었음
- system.formats 테이블에 supports_parallel_parsing, supports_parallel_formatting 컬럼이 추가됨
- CustomSeparated/TEmplate format에서 CSV 필드의 읽기가 개선됨
- ORDER BY 절 뿐만 아니라 모든 중복 정렬 단계(서브 쿼리 등)에서 중복 정렬 연산이 제거됨. 이는 쿼리 계획 윗 단계에서 구현됨
- system.parts 테이블로 cleanup thread에 의해 체크된 가장 최근의 파트의 정보가 추가됨
- 삽입에 대한 읽기전용 모드에서 테이블 함수 사용이 불가능함
- CleanupThread의 한번 수행(반복)으로 처리되는 파트의 수를 simultaneous_parts_removal_limit 파라미터로 제어할 수 있음
- 사용자가 index_granularity에 0값(잘못된)을 실수로 명시하지 않도록 예방함
- Arrow/Parquet/ORC 내 bool 타입을 지원함
- system logs에 대한 설정 파라미터인 <storage_policy>를 추가함
Performance Improvement
- MergeTree 테이블의 시작 시 비활성화된 파트를 적재하지 않음
- 쿼리 파싱 속도가 증가함
- LowCardinality 컬럼일 경우 expr = x1 OR ... or expr = xN 구문을 expr IN (x1, ..., xN) 구문으로 변형함. 이 경우 optimize_min_equality_dsjunction_chain_length 파라미터는 무시됨
- threadpool을 최적화함. 이로 인해 ThreadPoolImpl::mutex에 대한 락 경합은 75% 정도 감소하였고 CPU 사용률의 전체적인 속도는 2.4% 개선됨
- 원격 파일시스템에 대한 비동기 읽기의 성능이 약간 증가함
- system.replicas 테이블은 복제본 상태를 병렬로 가져옴
Experimental Feature
- 쿼리 결과 캐시가 추가됨
- Replicated database의 비활성화된 복제본의 메타데이터를 제거하는 SYSTEM DROP DATABASE REPLICA 구문이 추가됨
Build/Testing/Packaging Improvement
- -
참고
- clickhouse change log doc_001
https://clickhouse.com/docs/en/whats-new/changelog/
728x90
반응형
'CDBMS > Clickhouse' 카테고리의 다른 글
[Clickhouse] Ver. 23.3 Release note 요약 (0) | 2024.05.06 |
---|---|
[Clickhouse] Ver. 23.2 Release note 요약 (0) | 2024.05.05 |
[Clickhouse] Ver. 22.12 Release note 요약 (0) | 2024.05.03 |
[Clickhouse] Ver. 22.11 Release note 요약 (0) | 2024.05.02 |
[Clickhouse] Ver. 22.10 Release note 요약 (0) | 2024.05.01 |