본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 23.9 Release note 요약

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

목적

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

 

읽기 전에

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

 

Upgrade Notes

  • -

 

Backward Incompatible Change

  • 기본 Prometheus 핸들러에서 status_info 구성 옵션과 사전(dictionaries) 상태를 제거함
  • 실험적인 부분에서 메타데이터 캐시가 코드베이스에서 제거됨
  • JSON 형식에서 문자열로부터 숫자를 추론하려는 시도를 기본적으로 비활성화함

 

New Feature

  • JSON 객체에서 이름이 지정된 튜플을 객체에서 추론할 수 있도록 개선함
  • JSON  배열을 String 타입의 컬럼으로 파싱하는 것을 허용함
  • JSON 형식에서 알 수 없는 타입(null/[]/{})의 JSON 키를 문자열로 사용할 수 있도록 함
  • s3, s3_plain, hdfs, azure_blob_storage와 같은 디스크 타입의 스토리지 구성이 이제 읽기 및 쓰기 리소스를 담고 있는 read_resource 및 write_resource 요소를 포함할 수 있게 됨
  • 네이티브 TCP 프로토콜 전용으로 SSH 키를 기반으로 하는 새로운 타입의 인증이 추가됨
  • MergeTree 테이블에 block number 라는 신규 컬럼이 추가됨
  • DROP TABLE 쿼리문에 IF EMPRY 절이 추가됨
  • 비상수 시간대 인수를 지원하는 SQL 함수가 추가됨
  • ALTER TABLE MODIFY COMMENT 절 지원을 추가함
  • GCD(최대 공약수) 데이터 압축 코덱이 추가됨
  • DECIMAL 타입의 별칭을 추가함
  • 백업 및 복원 작업 추적을 위한 새로운 시스템 로그 테이블인 backup_log 테이블이 추가됨
  • Markdown 출력 형식에서 특수 문자 이스케이프 설정을 추가함
  • decodeHTMLComponent 함수를 추가함
  • 쿼리 로그 테이블에 peak_threads_usage를 추가함
  • clickhouse-client에 SHOW FUNCTIONS 지원을 추가함
  • toDaysSinceYearZero 및 관련 함수가 추가됨
  • YYYYMMDDtoDate, YYYYMMDDtoDate32, YYYYMMDDhhmmssToDateTime, YYYYMMDDhhmmssToDateTime64 함수가 추가됨
  • byteHammingDistance, editDistance를 포함한 여러 문자열 거리 함수가 추가됨
  • 사용자 자격증명의 만료 날짜 및 시간을 지정할 수 있는 기능이 추가됨
  • S3 스타일 URL을 테이블 함수 s3, gcs, oss에 사용할 수 있게 함
  • 깊게 중첩된 타입 이름을 예쁘게 출력하는 새로운 설정이 추가됨. print_pretty_type_names 설정으로 제어함

 

Performance Improvement

  • S3에서 읽기 속도 향상을 위해 기본적으로 prefetches를 활성화함
  • FINAL이 있는 쿼리에서 불필요한 경우 PK와 버전 컬럼을 암묵적으로 읽지 않음
  • 상수 키로 group by를 최적화함
  • Decimal 컬럼에 대한 정렬 성능을 향상함
  • 거대한 쿼리 분석 성능을 향상시킴
  • COUNT(DISTINCT ...) 및 다양한 uniq 변형을 count로 재작성하는 최적화를 진행함
  • mmap/mremap/munmap 수동 호출 제거 및 jemalloc에 이 작업을 위임함
  • toString 함수의 성능을 개선함
  • JSON 요소의 직렬화 성능을 향상함
  • ORDER BY 최적화를 통한 MergeTree 테이블의 데이터 읽기 성능을 향상함
  • JSON SQL 함수의 성능을 개선함
  • Keeper의 요청 배치 처리를 통하여 성능을 개선함
  • clickhouse-client에서 파일을 병렬 처리하도록 함
  • IN 함수에서 기본 키와 다른 타입을 사용할 수 있도록 함
  • 배열 조인에 대한 max_block_size 적용을 통한 OOM을 방지하도록 함
  • S3 테이블 함수에서 HTTP 연결을 재사용할 수 있도록 함
  • MergeTreeRangeReader의 선형 검색을 이진 검색으로 대체하여 성능을 개선함

 

Experimental Feature

  • max_threads_for_annoy_index_creation 설정을 사용하여 Annoy 인덱스 생성을 병렬화할 수 있도록 함
  • 분산된 복제본을 통한 병렬 복제가 모든 복제본에서 읽지 않도록 함

 

Improvement

  • MergeTree 데이터 파트의 컬럼 파일 이름을 해시로 대체 가능하도록 함
  • 메타데이터 파싱 실패 시에 JSON 데이터를 JSONEachRow로 파싱하도록 함
  • HTTP 쿼리 실행 중에 예외 발생 시 유효한 JSON/XML을 출력하도록 함
  • information_schema.tables에 data_length 필드를 추가함
  • MySQL 인터페이스에 준비된 문장(prepared statements)의 최소 구현을 추가함
  • regexp_tree 사전에서 대소문자 구분 없는 매칭과 dot-all 매칭 모드를 지원함
  • Keeper 명령에 createIfNotExists를 추가함
  • 정수 타입 추론의 정확도를 향상함
  • MaterializedMySQL에서 문자열 리터럴의 문자 집합 해석을 지원함
  • EmbeddedRocksDB 테이블 엔진의 드물게 발생하는 문제를 해결함
  • CLUSTER에서 RESTORE TABLE 시 일치하는 UUID를 가진 복제 테이블을 생성하도록 함
  • 복원 과중 중에 손상된 파트를 분리된 폴더로 처리하는 설정을 추가함
  • HTTP 헤더에 elapsed_ns 필드를 추가함
  • keeper-client에 reconfig, sync, exists 명령을 구현함
  • clickhouse-local 및 clickhouse-client에서 --query 매개변수를 다중 지정할 수 있도록 지원함
  • formatReadableTimeDelta에 초 단위 이하 정밀도를 추가함
  • allow_remove_stale_moving_parts 설정을 기본적으로 활성화함
  • 아카이브에서 읽을 때 진행 상태 표시를 개선 및 캐시에서 count 사용을 수정함
  • s3  자격증명을 SSO를 사용하여 지원함
  • 중첩 타입인 Array/Tuple/Map에 대해 NULL을 기본적으로 지원함
  • Arrow/Parquet 포맷에서 비정상적인 청크 구성을 읽을 수 있도록 함
  • stddevPop 함수에 대한 STD 별칭을 추가함
  • AddDate 및 subDate 함수를 추가함
  • system.detached_parts에 modification_time 필드를 추가함
  • splitby_max_substrings_includes_remaining_string 설정이 추가됨
  • Int64/UInt64 필드 및 중첩 타일에 대한 정수 타입 추론을 개선함
  • 스칼라에 대한 배열 연산 지원을 추가함
  • keeper-client에 rm 명령의 안전한 삭제를 위한 버전 인자를 추가함
  • systemd에 의한 서버 종료를 방지하도록 함
  • 함수의 결정성 여부를 나타내는 system.functions 시스템 테이블 필드 is_deterministic 을 추가함
  • MySQL과 호환되는 information_schema 뷰의 호환성을 향상함

 

Build/Testing/Packaging Improvement

  • base64 값 처리 라이브러리인 Turbo-Base64에서 aklomp-base64로 교체함

 

Bug Fix

  • zero-copy replication 실험 기능과 관련된 REPLACE/MOVE PARTITION을 수정함
  • zero-copy replication 실험 기능과 관련된 하드링크 문제를 수정함
  • zero-copy replication 실험 기능과 관련된 가비지 컬렉션 문제를 수정함
  • HTTP 재시도 타임아웃을 밀리초 단위로 전달 수정함
  • CapnProto/Protobuf 사용 시 OUTFILE과 관련된 오해의 소지가 있느 에러 메시지를 수정함
  • 병렬 복제본과 LIMIT을 사용할 때 요약 보고를 수정함
  • S3에서 BACKUP 작업의 스로틀링을 수정함
  • 전체 디렉토리 복사 중에 IO 스로틀링을 수정함
  • prewhere 조건으로 이동된 동작이 컬럼을 잃어버릴 수 있는 문제를 수정함
  • byte-equal 파트로 교체할 때 발생하는 내부 오류를 수정함
  • interpolate 표현식에 참여하는 컬럼을 요구하는 문제를 수정함
  • accurateCastOrNull 함수의 문제를 수정함
  • FINAL 수정자를 사용한 nullable 기본 키 문제를 수정함
  • 복제된 mv에 새 데이터 삽입을 방해하는 오류를 수정함
  • 블룸 필터에서 IPv6 지원을 허용하도록 수정함
  • IPv4와의 가능한 타입 불일치를 수정함
  • 재생성된 인덱스에 대한 system.data_skipping_indices를 수정함
  • 여러 조인 재작성 v2에서의 이름 충돌을 수정함
  • 조인 후 system.errors에서 예상치 못한 오류를 수정함
  • NULL에 대해 isZeroOrNull 함수를 수정함
  • 분산 환겨엥서 병렬 복제본과 prefer_localhost_replica = 1로 설정할때 문제가 발생하는 버그를 수정함
  • 수직 병합 및 ReplacingMergeTree 사용 시의 논리적 오류를 수정함
  • S3 테이블 함수에서 URL에 잘못된 문자가 포함된 경우 발생할 수 있는 오류를 수정함
  • arrayExists 함수의 AST 최적화 중 발생할 수 있는 세그먼테이션 오류르 수정함
  • 분석 분산 함수에서 덧셈 전에 오버플로우 체크를 추가하도록 함
  • removeSharedRecursive 버그를 재현 및 수정함
  • PREWHERE 및 FINAL에서 SimpleAggregateFunction 사용 시 발생할 수 있는 잘못된 결과를 수정함
  • 인덱스 힌트를 사용한 파트 필터링의 비 분석기(analyzer) 문제를 수정함
  • clickhouse-local이 --datebase 커맨드 라인 인자를 지원하도록 함
  • SimpleAggreagteFunction과 PREWHERE 및 FINAL을 사용할 때 발생할 수 있는 잘못된 결과를 수정함
  • Nullable 기본 키와 FINAL 수정자 사용 시 발생하는 문제를 수정함
  • analysisOfVariance 함수에서 덧셈 전 오버플로를 확인하는 로직을 추가함
  • Keeper 중단 시 세그폴트 문제를 수정함
  • MaterializedPostgreSQL에서 Chunk의 잘못된 행 수로 인한 오류를 수정함
  • 구식 포맷 설정을 별도 섹션으로 이동함
  • 파티션 키가 수정될 때 minmax_count_projection을 재구축하도록 함

 

참고

728x90
반응형