본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 23.8 Release note 요약

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

목적

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

 

읽기 전에

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

 

Upgrade Notes

  • -

 

Backward Incompatible Change

  • system.text_log의 microsesconds 컬럼과 system.metric_log의 millisencds 컬럼이 제거됨
  • 메타데이터 캐시 기능 사용이 중단됨. 이 기능은 실험적이었으며 위험한 기능임
  • TSL 연결에서 3DES 지원이 중단됨

 

New Feature

  • zip/7z/tar 아카이브에서 직접 가져오기 기능이 추가됨
  • system.trace_log에 ptr 컬럼이 추가되었으며 trace_type = 'MemorySample'에 대해 할당ㄹ 주소를 포함함
  • azureBlobStorageCluster 테이블 함수가 추가됨
  • 클러스터, clusterAllReplicas, remote 및 remoteSecure를 테이블 이름 없이 사용할 수 있게 됨
  • Kafka 소비자를 모니터링하기 위한 시스템 테이블이 추가됨
  • max_sessions_for_user 설정이 추가됨
  • toUTCTimestamp/fromUTCTimestamp 함수가 추가되어 spak의 to_utc_timestamp/from_uic_timestamp와 동일하게 동작함
  • structureToCapnProtoSchema/structureToProtobufSchema 함수가 추가되어, Clickhouse 테이블 구조를 CapnProto/Protobuf 포맷 스키마로 변환할 수 있음
  • system.query_log에 새로운 필드 qury_cache_usage가 추가되어, 쿼리 캐시의 사용 여부와 방법을 보여줌
  • startsWithUTF8 및 endsWithUTF8 함수가 신규 추가됨
  • TSV/CustomeSeparated/JSONCompactEachRow에서 변수 개수의 컬럼을 허용하며 변수 개수의 컬럼을 사용해 스키마 추론을 수행할 수 있게 됨
  • SYSTEM STOP/START PULLING REPLICATION LOG 쿼리가 추가되어, ReplicatedMergeTree의 테스트를 용이하게 함
  • 변이(mutations) 작업에서 상수 비결정적 함수를 실행할 수 있게 됨
  • 데이터를 읽지 않고 파일 목록을 나열할 수 있는 input foramt One이 추가됨
  • tupleConcat 함수가 추가됨
  • TRUNCATE DATABASE 작업을 지원함
  • primary key 처리에 사용되는 스레드의 수를 제한하는 max_threads_for_indexes 설정이 추가됨
  • SipHash keyed 함수가 다시 추가됨
  • arrayRotateLeft, arrayRotateRight, ArrayShiftLeft, arrayShiftRight 함수가 추가됨
  • system.clustsers 테이블에 cluster라는 별칭으로 column명이 추가됨
  • 고급 대시보드에서 대량 편집(저장/로드)를 허용함
  • 고급 대시보드에서 차트를 최대화하고 이동할 수 있는 옵션이 추가됨
  • 배열을 더하고 빼는 지원이 추가됨
  • 문자열 리터럴을 테이블 이름으로 사용할 수 있는 지원이 추가됨

 

Experimental Feature

  • 새로운 테이블 엔진인 S3Queue가 추가됨
  • 복제를 통한 병렬 읽기를 활성화함
  • HNSW로 근사 이웃 탐색 방법에 대한 실험적 지원이 추가됨

 

Performance Improvement

  • 파케이 필터 푸시다운을 지원함
  • 작은 행 그룹을 배치하여 파케이 읽기를 최적화함
  • 다수의 입력 형식에서 파일에 count를 최적화함
  • url/file/hdfs 테이블 함수에서 읽기 전에 파일/경로에 의한 필터를 사용하도록 함
  • AArch64, PowerPC, SystemZ, RISC-V에 대한 JIT 컴파일을 활성화함
  • countDistinctIf를 count_distinct_implementation으로 재작성하는 설정을 추가함
  • uniq 및 uniqExact 집계 함수의 상태를 병합하기 전에 병렬 변환을 통해 병합 속도를 향상시킴
  • Nullable 문자열 키를 사용한 집계 성능을 최적화함
  • 시간 필터 최적화를 위한 Analyzer 패스를 추가함
  • uniqExact(COUNT DISTINCT) 함수에서 모든 해시 세트가 단일 레벨일 경우 병합을 최적화함
  • 해시 조인 데이터 구조를 몯느 열과 함께 복제하지 않는 Join 테이블 엔진이 도입됨
  • "apache arrow" 라이브러리 없이 ORC 입력 형식 구현으로 성능이 개선됨
  • 대규모 시간 프레임에 대한 인터넷 연결 속도 개선을 위해 대시보드 데이터를 압축함
  • 백업 및 복원 작업에 대한 스레드 풀 사용을 개선함
  • 시작 시 파일 시스템 캐시 메타데이터를 병렬로 로딩하도록 함. 이는 load_metadata_threads(기본값 1)로 제어함
  • prewhere에서 기본 키 열 이동을 최적화함
  • Clickhouse Keeper와의 상호작용을 최적화함
  • 파일/s3/url/hdfs/azure 함수에서 count에 대한 파일의 행 수를 캐싱하도록 함
  • S3 테이블 함수의 속도를 개선함

 

Improvement

  • 외부 명령어 stderr 데이터가 있을 때의 반응 설정을 추가함
  • system 테이블인 part_log 및 merge 테이블에 파티션 열을 추가함
  • 인덱스의 압축/마크, mmap 및 쿼리 캐시 크기를 동적으로 구성할 수 있도록 함
  • 복잡한 키로 딕셔너리를 생성 시 "complex key" 레이아웃을 자동 선택하도록 함
  • 새로운 동시성 제어 기능 테스트를 위한 설정을 추가함
  • DB 및 테이블 이름에 대한 오타 제안 기능을 추가함
  • hdfs에서 작은 파일 읽기를 최적화함
  • 세션 만료 후에 불필요한 에러 로글ㄹ 감소함
  • 시간 제한이 있는 대체 zookeeper 세션을 도입함
  • max_partitions_per_insert_block 도달 시 로그 기록 기능을 추가함
  • clickhouse-keeper-client에 대한 사용자 정의 명령을 추가함
  • .azureBlobStorage 테이블 함수에서의 연결 문자열 체크를 업데이트함
  • JOIN 알고리즘에서 필터링 세트에 대한 설명을 수정함
  • 큰 max_block_size를 가진 Aggregator에서 메모리 소비 문제를 해결함
  • SYSTEM SYNC FILESYSTEM CACHE 명령을 추가함
  • clickhouse용 일반 프록시 리졸버 생성을 시도하도록 함
  • 튜플 하위 컬럼을 file/s3/hdfs/url/azureBlobStorage 테이블 함수에서 읽기 기능을 지원함
  • arrayIntersect 함수가 첫 번째 인수에 해당하는 순서로 값을 변환하도록 변경함
  • 액세스 엔터티 생성/삭제 또는 다른 액세스 스토리지로 이동을 위한 새로운 쿼리를 추가함
  • ALTER TABLE FREEZE 쿼리를 복제된 DB 엔진에서 비복제로 만들도록 함
  • s3 테이블 함수가 사전 서명된 URL과 함께 작동하지 않는 문제를 수정함
  • system.events 및 system.metrics 테이블에 이벤트 및 메트릭의 별칭으로 컬럼 이름을 추가함
  • CREATE UNIQUE INDEX 구문을 파서에서 지원하도록 추가, UNIQUE 인덱스는 지원되지 않음
  • Kafka 엔진 설정에서 정의된 매크로({database} 및 {table}) 지원을 추가함
  • 백업/복원 중 파일 시스템 캐시 업데이트를 비활성화함
  • S3 엔드포인트 구성을 루트에서 사용 가능하도록 개선함
  • clickhouse-local에 대한 위치 인수 사용 및 글로벌 UDF 설정을 적용함
  • system.asynchronous_metrics에 쿼리 캐시 메트릭을 추가함
  • S3에 백업할 때 s3_storage_class 매개변수를 상요 가능하도록 함
  • 백업 메타데이터 파일을 파싱하고 백업 정보를 출력하는 유틸리티를 추가함
  • 대소문자를 구분하지 않는 database 및 table 이름 처리를 위한 information_schema 데이터베이스를 개선함
  • CHECK TABLE 성능 및 사용성을 향상함
  • 튜플에 대한 모듈로 intDiv, intDivOrZero 연산 지원을 추가함
  • clickhouse-client가 XML 후에 기본 yaml 및 yml 설정을 검색할 수 있도록 변경함
  • non-'clickhouse' 루트 구성과의 병합 시 다른 루트 노드 이름을 가진 구성을 건너뛰는 문제를 수정함
  • 메모리 프로파일러 샘플링을 위한 할당 크기의 최소 및최대 지정이 가능하도록 함
  • 정밀한 부동 소수점 파싱을 위한 설정을 추가함
  • clickhosue-keeper의 기본 경로 설정을 개선함
  • remote 테이블 함수에 대한 오류 메시지를 개선함
  • 복원 쿼리의 SETTINGS 절에서 사용자 정의 스토리지 정책 지정을 추가함
  • 백업 작업에서 S3 요청 조절 기능을 추가함
  • 복제된 사용자 정의 함수 또는 접근 제어 엔터티 관리를 위한 ON CLUSTER절 무시 설정을 추가함
  • JOIN 단계에 대한 EXPLAIN 작업을 추가함
  • 파일 시스템 캐시 경로 제한 기능을 추가함
  • Clickhouse 디버깅을 위한 사용자 정의 명령을 추가함
  • 스키마 추론 중에 파일 이름에 대한 진단 정보를 추가함
  • 클라이언트가 주 연결을 사용하여 제안을 로드하는 기능을 추가함
  • SYSTEM STOP/START LISTEN QUERIES에 EXCEPT 절을 추가함
  • 동시 쿼리 수의 기본값을 100에서 1000으로 변경함
  • 동시 백그라운드 파티션 최적화 병합의 수를 제한함
  • 복제된 DB에서 테이블 데이터 디렉토리를 휴지통으로 이동할 수 있는 설정을 추가함
  • 서버 설정 오류에 대해 깔끔하게 실패 처리하도록 개선함
  • clickhouse 서버가 cgroups를 통해 변경된 메모리 제한을 적용하도록 함
  • 분산 테이블의 플러시 비활성화 가능하도록 함
  • domainRFC 함수가 IPv6 주소를 지원하도록 함
  • s3 CopyObject 요청에 대한 타임아웃을 연장하도록 함
  • groupArray 함수의 직렬화 시 배열 크기 제한 설정을 추가함
  • SCHEMA를 DATABASE의 별칭으로 추가하여 MySQL 호환성을 개선함
  • 시스템 데이터베이스 내 테이블에 대한 비동기 메트릭을 추가함
  • Play UI 및 대시보드의 SQL 에디터가 Grammarly를 사용하지 않도록 설정함
  • 인덱스의 마크/압축 캐시의 크기 비율 및 캐시 정책을 전문가 수준에서 설정 가능하도록 함
  • TCPHandler에서 쿼리 패킷의 클라이언트 정보 검증을 추가함
  • keeper 클라이언트가 clickhouse의 config.xml에서 연결 문자열 검색을 시도하도록 함
  • MergeTree 테이블 엔진군에서 데이터 부분(part) 잠금 유지 시간을 보여주는 profile event를 추가함

 

Build/Testing/Packaging Improvement

  • clickhouse start 명령어에서 환경 변수를 유지하도록 함

 

Bug Fix

  • Annoy 인덱스를 빌드업하는 동안 여러 마크가 있을 때 리셋하지 않도록함. 이는 실험적인 기능임
  • RESTORE 작업 중에 임시 디렉토리의 사용을 수정함
  • Nullable(IPv4) 타입에 대한 이진 산술 연산이 수정됨
  • IPv4 및 IPv6 데이터 타입을 사전 속성으로 지원함
  • 압축 마크의 체크섬에 대해 수정됨
  • 실행 가능한 사용자 정의 함수에 대해 매개변수가 있을 때 예외를 던지지 않도록 함
  • ALTER DELETE 쿼리에서 스킵 인덱스와 프로젝션의 재계산을 수정함
  • clickhouse 방언으로만 제안을 로드하도록 함
  • OR 표현식을 사용한 가상 컬럼으로 필터링할 때의 문제를 수정함
  • 하나의 sparse 컬럼 인수를 가진 함수 튜플에서 발생할 수 있는 충돌을 수정함
  • 클러스터에서 명명된 컬렉션을 올바르게 읽을 수 있도록 수정함
  • 다단계 PREWHERE에서 불필요한 컬럼을 읽는 문제를 수정함
  • null first 방향으로 여러 컬럼을 정렬할 때 예상치 못한 결과를 수정함
  • Keeper 재구성 과정에서 발생할 수 있는 데이터 경쟁 문제를 수정함
  • session_log 테이블에 대한 새로운 테스트를 추가하고 로그인과 로그아웃 사이의 불일치를 수정함
  • 비동기 flush 쿼리를 사용할 때 part_log의 query_id를 올바르게 처리하도록 수정함
  • 캐시로부터 "Read unexpected size"라는 오류 메시지를 받는 문제를 수정함
  • PostgreSQL 엔진에서 문자 이스케이핑을 올바르게 처리하도록 수정함
  • 병렬 FINAL을 사용한 쿼리를 실행할 때 컬럼 순서가 잘못되는 문제를 수정함
  • ReplacingMergeTree에서 do_not_merge_across_partitions_select_final 옵션을 사용할 때 발생할 수 있는 SELECT 쿼리의 문제를 수정함
  • 시스템 종료 시 비동기 삽입 큐를 먼저 플러시하도록 수정함
  • UPDATE 및 DELETE 쿼리의 조건에서 JSON 서브컬럼을 사용할 때 발생할 수 있는 버그를 수정함
  • full_sorting_merge 조인을 사용할 때 필터 푸시다운을 올바르게 처리하도록 수정함
  • PostgreSQL 엔진을 사용할 때 발생할 수 있는 세그폴트(메모리 접근 오류)를 수정함

 

참고

728x90
반응형