본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 23.12 Release note 요약

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

목적

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

 

읽기 전에

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

 

Upgrade Notes

  • -

 

Backward Incompatible Change

  • TTL 표현식에서 불확정 함수의 사용을 체크하는 방법을 수정함
  • MergeTree 설정 중에 clean_deleted_rows가 사용 중단되었음. 또한 OPTIMIZE의 CLEANUP 키워드도 기본적으로 허용되지 않음

 

New Feature

  • Refreshable Materialized views가 구현됨
  • PASTE JOIN가 도압되어 ON 절 없이 행 번호를 기반으로 테이블을 조인할 수 있게 함
  • ORDER BY 절이 ALL을 지정하는 것을 지원하게 되어 SELECT 절에 있는 모든 컬럼을 기준으로 정렬할 수 있음
  • ALTER TABLE <table> APPLY DELETED MASK 명령어가 추가되어, 경량 삭제에 의해 작성된 마스크를 적용하고 디스크에서 삭제된 행을 제거할 수 있음
  • /binary 핸들러가 추가됨
  • 새로운 SQL 함수인 sqid가 추가됨
  • 새로운 함수인 seriesPeriodDetectFFT가 추가됨
  • Keeper가 트래픽을 수락할 준비가 되었는지 확인하기 위한 HTTP 엔드포인트가 추가됨
  • 스키마 추론에 union모드가 추가되어 결과 테이블 스키마가 모든 파일 스키마의 합집합이 됨
  • 새로운 설정인 input_foramt_csv_try_infer_numbers_from_strings가 추가됨
  • DB 또는 테이블의 수가 설정된 임계값을 초과하면 사용자에게 경고를 표시하도록 함
  • Dictrionary의 HASHED_ARRAY (및 COMPLEX_KEY_HASHED_ARRAY) 레이아웃이 SHARDS를 지원학 ㅔ됨
  • 전체 pk 키 바이트와 메모리 내 할당된 pk 키 바이트의 비동기 메트릭이 추가됨
  • 새로운 함수인 SHA512_256이 추가됨
  • FORMAT_BYTES가 formatReadableSize의 별칭으로 추가됨
  • S3 테이블 함수에 선택적 세션 토큰을 전달할 수 있게 됨
  • 새로운 설정인 http_make_head_request가 추가되어 URL 테이블 엔진이 파일 크기를 결정하기 위해 HEAD 요청을 수행하지 않도록 할 수 있음
  • 이제 인덱스(non-pk) 정의에서 ALIAS 컬럼을 참조할 수 있음
  • 새로운 설정인 readonly가 추가되어 s3 디스크를 읽기 전용으로 지정할 수 있음
  • MergeTree 테이블의 pk 분석이 이제 _part_offset(선택적으로 _part와 함께) 가상 컬럼을 포함하는 조건에 적용됨

 

Performance Improvement

  • MergeTree 테이블의 FINAL 처리 동안 겹치지 않는 부분의 범위를 추출함
  • s3 디스크 간의 복사를 서버 측 복사로 개선하여 백업/복원 작업과 clickhouse-disks 복사 명령의 성능을 향상함
  • Hash join이 max_joined_block_size_rows 설정을 존중하여 ALL JOIN에 대해 큰 블록을 생성하지 않음
  • 집계 메모리 할당을 더 일찍 해제하여 불필요한 외부 집계를 피할 수 있도록 함
  • 문자열 직렬화 성능을 개선함
  • Merge 엔진 테이블에 대한 간단한 count 최적화를 지원함
  • 일부 경우에 집계를 최적화함
  • hasAny 함수가 전체 텍스트 스킵 인덱스를 활용할 수 있도록 개선함
  • 조건부 평가를 위한 if(cond, then, else) 함수의 최적화가 이루어짐
  • MergeTree가 do_not_merge_across_partitions_select_final 설정을 자동으로 유추하도록 함
  • native 타입에 대한 MIN과 MAX의 속도를 향상함
  • 파일 시스템 캐시에 대한 SLRU 캐시 정책을 구현함
  • 백그라운드의 fetch 작업에 대한 연결 수의 제한을 background_fetches_pool_size 설정의 값으로 증가함
  • system.filesystem_cache 쿼리가 메모리 집약적이지 않도록 개선함
  • 문자열의 역직렬화 시에 메모리 사용량을 감소함
  • Enum 생성자의 효율성 향상
  • 항상 pread 방법을 사용하도록 하여 파일 시스템 캐시에서 읽기를 개선
  • 논리 표현 옵티마이저에서 AND notEquals 체인에 대한 최적화를 추가함

 

Experimental Feature

  • -

 

Improvement

  • Keeper에서 소프트 메모리 제한을 지원함
  • 분산 테이블의 삽입이 업데이트된 클러스터 구성을 제대로 처리하도록 변경함
  • 일관성 없는 병합 매개변수를 가진 복제 테이블 생성을 금지하도록 함
  • system.tables에 압축되지 않은 크기를 표시함
  • 분산 테이블에 대해 skip_unavailable_shards 설정을 추가함
  • Enum 타입으로 substring(별칭: substr, mid) 함수 사용이 가능함
  • format 함수가 모든 인수 타입을 지원하도록 개선함
  • data_trunc 함수가 대소문자를 구분하지 않는 첫 번째 인수를 사용할 수 있도록 허용함
  • 테이블이 존재하지 않을 때 더 나은 힌트를 제공하도록 함
  • 쿼리 시간에 max_partition_size_to_drop 및 max_table_size_to_drop 서버 설정을 덮어쓸 수 있도록 함
  • JSON 형식에서 이름 없는 튜플 추론을 개선함
  • Keeper에 연결할 때 읽기 전용 플래그를 지원함
  • 분산 전송이 "No such file or directory"로 인해 멈출 수 있는 문제를 수정함
  • MaterializedPostgreSQL에서 PostgreSQL 생성된 컬럼과 기본 컬럼값을 지원함
  • 서버 재시작 없이 일부 파일 시스템 캐시 구성 설정 변경 적용을 가능하도록 함
  • PostgreSQL 테이블 구조에서 빈 배열을 적절하게 처리하도록 개선함
  • 서버 재시작 이후 발생한 전체 오류 수를 ClickhouseErrorMetric_ALL 메트릭으로 노출함
  • 환경 변수 또는 Zookeeper 참조를 사용하여 구성 파일 내 노드를 허용하고, replace=1로 비어 있지 않은 요소를 허용함
  • fuzzJSON 테이블 함수를 통해 형식이 잘못된 많은 JSON 생성을 가능하게 함
  • IPv6를 UInt128 변환 및 이진 산술 연산을 지원함
  • 비동기 삽입 중복 제거 캐시에 대한 설정을 추가함
  • sleep() 함수가 KILL QUERY로 취소 가능하도록 함
  • 실험적인 Replicated DB에서 Replicated 테이블 엔진에 대한 CREATE TABLE ... AS SELECT 쿼리를 금지함
  • 외부 DB에 대한 쿼리 변환을 개선하여 모든 호환 가능한 조건을 재귀적으로 얻을 수 있도록 함
  • 파일 시스템 캐시 크기의 동적 리로딩을 지원함
  • system.stack_trace가 SIGRTMIN이 차단된 스레드를 올바르게 지원하도록 함
  • 쿼리 삽입 검사에서 Keeper 실패를 허용함
  • system.asynchronous_metrics에 최대/피크 RSS(MemoryResidentMax)를 추가함
  • S3 스타일 링크 사용 시 기본이 아닌 지역을 명시하지 않아도 되게 개선을 함
  • 동일한 경로를 사용하는 캐시가 동일한 캐시 객체를 사용하도록 함

 

Build/Testing/Packaging Improvement

  • -

 

Bug Fix

  • TTL GROUP BY에서 정렬 순서 파괴 가능성을 수정함
  • LTTB 버킷 전략 분할을 수정함
  • Template 포맷에서 오류 후 동기화 중에 발생할 수 있는 데드락을 수정함
  • Fuzzer에 의해 발견된 "non-ready set" 오류의 또 다른 사례를 수정함
  • PostgreSQL array_ndims 사용과 관련된 여러 문제를 수정함
  • 쓰기 잠금 타임아웃 후 RWLock 불일치를 수정함
  • 뷰 체인을 구축할 때 일시적인 컬럼을 제외하지 않는 문제를 수정함
  • MaterializedPostgreSQL에서 특정 문제를  수정함
  • 복제된 접근 테이블의 관리를 위한 grant/revoke 쿼리에서 ON CLUSTER절을 무시하도록 함
  • clickhouse-local에서 발생할 수 있는 충돌을 수정함
  • 해시 조인에 대해 일부 수정함
  • PostgreSQL 소스에서 발생할 수 있는 오류를 수정함
  • 해시 조인에서 중첩된 LowCardinality에 대한 타입을 수정함
  • system.stack_trace의 병렬 읽기로 인한 시스템 정지를 방지함
  • 희소 컬럼)sparse 컬럼)의 집계에서 any(...)를 사용할 때 NULL 존중에 대해 오류가 발생하는 버극 ㅏ수정됨
  • 단항  연산자 파싱 오류를 수정함
  • MaterializedPostgreSQL 실험적 테이블 엔진에 대한 의존성 로딩을 수정함
  • BACKUP/RESTORE ON CLUSTER에서 연결이 끊긴 노드에 대한 재시도를 수정함
  • 부분적으로 실현된 프로젝션에서 외부 집계의 결과를 수정함
  • *Map 조합자를 가진 집계 함수에서의 병합을 수정함
  • system.kafka_consumers를 비활성화함
  • Merge JOIN에서 LowCadinality 키 지원을 수정함
  • InterpreterCreateQuery와 관련된 샘플 블록을 수정함
  • PostgreSQL에서 이름이 지정된 컬렉션에 대한 addresses_expr 무시하는 문제가 수정됨
  • CREATE INDEX에서 함수 이름을 정규화하는 과정에서 발생하는 오류를 수정함
  • 첫 번째 요청 이전에 사용할 수 없는 복제본 처리를 수정함
  • 리터럴 별칭의 잘못된 분류를 수정함
  • Keeper에서의 잘못된 전처리를 수정함
  • Poco 라이브러리에서의 UTF32Encoding 관련 정수 오버플로를 수정함
  • 스칼라 서브쿼리와 큰 정수 값을 가진 병렬 복제(실험적 기능)를 수정함
  • 범위를 벗어난 DateTime에 대한 accurateCastOrNull을 수정함
  • MergeTree에서 넓은 파트로부터 서브컬럼을 읽는 동안 발생할 수 있는 PARAMETER_OUT_OF_BOUND 오류를 수정함
  • 많은 서브쿼리를 포함한 CREATE VIEW의 속도 저하를 수정함
  • JSONCompactEachRow에 대한 병렬 파싱을 수정함

 

참고

 



728x90
반응형