본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 24.1 Release note 요약

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

목적

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

 

읽기 전에

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

 

Upgrade Notes

  • -

 

Backward Incompatible Change

  • print_pretty_type_names 설정이 기본적으로 활성화됨
  • MergeTree 설정 중에 clean_deleted_rows가 더이상 사용되지 않음
  • reverseDNSQuery 함수 사용이 불가함
  • 설정 파일의 접근 제얼 개선을 위한 다양한 변경을 화럿ㅇ화함
  • sumMapFiltered의 NaN 값 처리를 개선함
  • visibleWidth 함수가 문서대로 동작하도록 변경됨
  • Kusto 방언 사용을 중지함
  • FINAL  수정자의 더 효율적인 구현이 순서 보장을 더 이상 제공하지 않음. max_threads = 1일지라도 순서를 보장하지 않음

 

New Feature

  • 다양한 데이터 타입의 조합을 나타내는 Variant 데이터 타입을 구현함
  • min_compress_block_size, max_compress_block_size 설정을 컬럼 수준에서 지정 가능
  • quantileDD 집계 함수를 추가함
  • 모든 종류의 오브젝트 스토리지와 메타데이터 타입 구성을 허용함
  • 분산 DDL 출력 모드에 대한 null_status_on_timeout_only_active 및 throw_only_active 모드를 추가함
  • 다른 파티션 표현식을 가진 테이블 간 파티션 부착을 허용함
  • arraySingles 함수를 추가하여, 주어진 배열에서 지정된 크기의 연속적인 서브배열을 계산할 수 있음
  • Punycode 및 IDNA 관련 함수를 추가함
  • 문자열 유사성 함수를 추가함
  • Pretty 포맷에서 ANSI 이스케이프 시퀀스 자동을 비활성화함
  • sqidDecode 함수 추가로 Sqids 디코딩이 가능함
  • JSON 입력 포맷에서 Bool 값을 String으로 읽을 수 있도록 설정을 추가함
  • 시계열 데이터를 계절성, 추세성, 잔차성 요소로 분해하는 seriesDecomposeSTL 함수를 추가함
  • MaterializedMySQL을 위한 MySQL Binlog 클라이언트를 도입함
  • S3 디스크를 위한 객체 저장소 키 생성 방식을 변경함
  • 삭제된 테이블의 파트를 포함하는 시스템 테이블 system.dropped_tables_parts를 추가함
  • 테이블에 부착된 materialized view의 수를 제한하는 설정이 추가됨
  • clickhous-format이 values를 포함한 insert 쿼리를 지원함
  • clickhouse-local에서 모든 시스템 테이블을 포함하도록 함
  • transform 함수에서 Enum 데이터 유형을 지원함
  • 새로운 시스템 테이블인 system.database_engines를 추가함
  • SYSTEM SYNC REPLICA LIGHTWEIGHT 쿼리에 대한 FROM <Replicas> 수정자를 추가함
  • 독립적 materialized view에 대한 삽입 중복 제거 토큰 업데이트 설정을 추가함
  • 비동기 메트릭을 업데이트하는 SYSTEM RELOAD ASYNCHRONOUS METRICS 문을 추가함

 

Performance Improvement

  • 병렬 복제를 위한 조정 개선으로 성능이 향상됨
  • HTTP 외부 버퍼링을 Clickhouse 버퍼로 교체하여 성능으 개선함
  • uniqExact의 대규모 집계 상태 병렬 병합을 지원함
  • MergeTree 테이블에서 읽은 후 메모리 사용량을 감소함
  • 수직 병합 중 메모리 사용량을 감소함
  • Keeper 시작 시 메모리 소비를 감소함
  • Keeper의 메모리 사용을 최적화함
  • 최종 구현의 캐시를 친화적으로 개선함
  • S3에서의 읽기 시 추가 복사를 우회하도록 함
  • 배열 요소 함수 최적화로 성능이 개선됨
  • 컴팩트 파트에서 하나의 컬럼을 한 번에 여러 서브컬럼으로 읽을 수 있도록 함
  • sum(column + constant) 함수의 AST 재작성으로 쿼리를 최적화함
  • match 함수의 평가 성능이 향상됨
  • match 함수의 평가가 역인덱스를 활용하도록 하여 성능이 향상됨
  • MergeTree FINAL의 행 비교를 최적화함
  • iota 호출 속도를 향상함
  • non-numeric 타입의 MIN/MAX 성능이 향ㅅ아됨
  • 필터 조합 최적화가 이루어짐
  • clickhouse-local에서 스레드 수를 감소함
  • Nullable 타입의 multiIf 함수 성능이 향ㅅ아됨
  • JEMALLOC 관련 시스템 명령어 추가로 성능 및 메모리 관리가 개선됨
  • S3로 백업 시 메모리 소비를 감소함

 

Experimental Feature

  • -

 

Improvement

  • 시스템 테이블의 모든 컬럼에 간략한 설명이 추가됨
  • PASTE JOIN에 대해 서브쿼리의 별칭 없이 쿼리를 수행할 수 있도록 함
  • macOS에서 MySQL/MariaDB 통합이 활성화됨
  • max_rows_in_set_to_optimize_join 설정이 기본적으로 비활성화됨
  • <host_name> 설정이 추가되어 ON CLSUTER DDL 쿼리와 복제된 DB 엔진에서 호스트 이름을 해석하는 것을 피할 수 있도록 함
  • 파일 시스템 캐시에 대한 load_metadata_threads를 16으로 증가시킴
  • 병합/변이(merge, mutation) 제한 기능을 추가함
  • system.server_settings 테이블의 is_hot_reloadable 컬럼을 changeable_without_restart 컬럼으로 교체함
  • 클러스터 발견 시 사용자 이름과 비밀번호 설정을 지원함
  • ALTER TABLE ... PART에 쿼리 파라미터를 지원함
  • Kafka 테이블의 소비자 동적 생성 및 관리를 지원함
  • sparkBar를 sparkbar의 별칭으로 추가함
  • GCS 업로드 후 ComposeObject 요청을 방지함
  • 설정 XML에서 점(.)이 포함된 키의 처리를 개선함
  • 상수 인자에 대한 format 함수의 반환값을 최적화함
  • 실행 시간 추정을 위한 max_estimated_execution_time 설정을 추가함
  • 잘못된 DB 엔진 이름 사용 시 힌트를 제공함
  • Arrow 딕셔너리의 인덱스 타입 제어를 위한 설정을 추가함
  • CLICKHOUSE_PASSWORD_FILE 환경 변수를 지원함
  • Paste join에 필요한 스트림 수를 조정함
  • INVALID_IDENTIFIER 오류 메시지를 개선함
  • signed numeric literals의 처리를 개선함
  • MySQL용 Point 데이터 타입을 지원함
  • Float32 컬럼과 문자열 비교를 최적화함
  • S3 호환성 개선 및 ECloud EOS 스토리지 지원을 추가함
  • 백업/복원 작업 취소를 위한 KILL QUERY를 지원함
  • Avro 포맷의 ZSTD 코덱을 지원함
  • MySQL 인터페이스의 타임아웃 설정 지원을 강화함
  • 동일한 이름의 딕셔너리와 테이블 생성 충돌 시 예외 메시지를 개선함
  • 사용자 지정 디스크 생성 시 파일 시스템 캐시 경로 설정을 강화함
  • MySQL 인터페이스가 SHOW WARNINGS/SHOW COUNT() WARNINGS 쿼리를 지원함
  • 병렬 분산 INSERT SELECT 실행 시 사용할 수 없는 복제본을 건너뜀
  • JSON 구조화된 로그 포맷팅에서 로그 레벨 표시를 개선함
  • MySQL 인터페이스의 CAST(x AS SIGNED) 및 CAT(x AS UNSIGNED) 문을 지원함
  • Docker 컨테이너 내 데이터 경로로 작업 디렉토리를 변경함
  • Azure Blob Storage에 대한 최대 재시도 설정을 추가함
  • 손상된 데이터 레이크 테이블로 서버 시작을 허용함
  • Iceberg 테이블 엔진의 스키마 진화 무시 설젇ㅇ을 추가함
  • 읽기 전용 및 한 번 쓰기 스토리지에 대한 변경 작업을 금지함
  • _block_number 컬럼 관련 버그를 수정함
  • Play UI에서 JSON 내 예외 처리를 개선함
  • /biary HTTP 핸들러에서 사용자, 호스트, 비밀번호 지정을 지원함
  • 압축된 인메모리 테이블에 대한 백업을 지원함
  • BACKUP 및 RESTORE 쿼리에서 FORMAT 절을 지원함
  • concatWithSeparator 함수에서 임의의 인수 타입을 지원함

 

Build/Testing/Packaging Improvement

  • -

 

Bug Fix

  • insert 시 aggregate_functions_null_for_empty 설정과 관련된 버그를 수정함
  • 오래된 프로필 UUID로 인한 잠재적 예외를 수정함
  • StreamingFormatExector에서 읽기 버퍼 작업을 수정함
  • 삭제된 대상 테이블이 있는 mv를 무시하는 처리를 추가함
  • ALTER_METADATA와 MERGE_PARTS 사이의 가능한 경쟁 조건을 제거함
  • rollup을 사용한 group by에서 표현식 순서 버그를 수정함
  • "zero-copy" 복제 기능에 대한 수정함
  • user_files_path에서 심볼릭 링크 작업을 허용함
  • graphite 테이블에 집계 함수가 없을 때의 충돌을 수정함
  • StorageKafka에서의 지연된 읽기를 통해 mv에서 다중 읽기를 허용함
  • 겹치는 파트의 문제를 수정함
  • LIMIT만 있는 쿼리에서 MergeTreePrefetchedReadPool을 비활성화함
  • 복원 중에 일반 DB를 활성화함
  • Apache Hive의 ORC/Parquet 등을 위한 쓰레드풀 읽기를 수정함
  • system.backup_log의 base_backup_name 컬럼에서 자격 증명을 숨김
  • 밀리초 및 마이크로초 값의 toStartOfInterval 라운딩을 수정함
  • ConcurrentHashJoin에서 max_joined_block_rows를 비활성화함
  • 오래된 분석기에서 nullable을 사용하는 조인을 수정함
  • makeDateTime64 함수에서 비상수 분수 인수를 허용함
  • 인라인 프레임 심볼화 중 NULL 참조 가능성을 수정함
  • 사용자 또는 역할 변경 시 쿼리 캐시 항목의 격리를 개선함
  • 프로젝션 최적화 시 파티션 키 분석 오류를 수정함
  • 쿼리 캐시에 대한 사용자별 할당량 버그를 수정함
  • 병렬 창 함수에서 스트림 분할 문제를 수정함
  • addBatchLoopupTable8에서 예외 발생 시 이중 파괴 호출을 수정함
  • 종료 중인 Keeper에서 요청 처리를 금지함
  • SlabPolygonIndex::find에서 NULL 포인터 참조 문제를 수정함
  • LowCardinality(Nullable) 컬럼에 대한 JSONExtarct 함수를 수정함
  • 대량의 테이블 생성 및 삭제로 인한 메모리 사용량 증가 문제를 수정함
  • mv에서 파일 로그 저장소의 다중 읽기를 지원함
  • S3에 대한 액세스 키 ID 접근을 제한함
  • clickhouse-local에서 제안 로딩 중에 충돌을 수정함
  • indexHint 사용 시 충돌을 수정함
  • 서버 재시작 시 StorageURL이 헤더를 누락하는 버그가 수정됨
  • 분석기에서 삽입 블록으로 스토리지 교체를 수정함
  • ReadBufferFromZipArchive에서의 탐색(seek)를 수정함
  • 실험적인 역인덱스에 대한 수정이 이루어짐
  • query_factories_info에 대한 데이터 경쟁을 수정함
  • "Too many redirects" 오류 재시도를 비활성화함
  • 시작되지 않은 DB를 종료할 때 발생할 수 있는 교착상태를 수정함
  • 분산 쿼리에서의 limit by 및 limit 처리를 수정함
  • nullable timezone을 가진 toString 함수 사용 시 충돌을 수정함
  • Iceberg 메타데이터의 잘못된 파일 경로 처리를 수정함
  • Rust 타겟 선택 시 아키텍처 이름을 수정함
  • system.tables에서 서브쿼리를 사용한 쿼리 실행 시 "not-ready set"에 관한 논리적 오류를 수정함

 

참고

728x90
반응형