본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 23.10 Release note 요약

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

목적

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

 

읽기 전에

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

 

Upgrade Notes

  • -

 

Backward Incompatible Change

  • 파손된 데이터 파트를 자동으로 제거하는 옵션을 제거함
  • 이전에 구성된 인메모리 데이터 파트는 더이상 Write_Ahead Log에서 읽을 수 없게 됨
  • Meilisearch와의 통합이 제거됨
  • 디렉토리 모니터 개념이 백그라운드 INSERT로 이름이 변경됨
  • 클라이언트 측에서 설정된 send_timeout을 서버 측의 receive_timeout으로 해석하지 않게 되었고 그 반대도 마찬가지임
  • 다른 단위를 가진 시간 간격의 비교는 예외를 발생시키도록 함
  • 실험적인 S3Queue 테이블 엔진이 완전히 재작성됨
  • HTTP 엔드포인트의 임의 경로가 더이상 /query 엔드포인트의 요청으로 해석되지 않음

 

New Feature

  • 여러 배열에 람다 함수 적용을 위한 arrayFold 함수를 추가함
  • Npy 포맷 지원이 추가됨
  • 공간 채우기 곡선 키를 사용한 테이블의 인덱싱을 개선함
  • 특정 프로젝션 최적화의 강제 설정을 추가함
  • 외부 데이터를 통한 비동기 삽입이 지원됨
  • 시각화 데이터 다운샘플링을 위한 lttb 집계 함수를 추가함
  • CHECK TABLE의 성능 및 사용성이 개선됨
  • JSON 데이터 병합을 위한 jsonMergePatch 함수를 추가함
  • Kusto Query Language 방언 지원의 두 번째 부분이 추가됨
  • 배열에서 무작위 샘플을 반환하는 arrayRandomSample 함수가 추가됨
  • ArgMin/ ArgMax 집계 조합자 소개로 최소/최대 값만으로 집계가 가능하도록 함
  • Protobuf 포맷의 캐시를 삭제할 수 있도록 지원함
  • 외부 HTTP Basic 인증기가 추가됨
  • 부호가 없는 정수의 바이트를 반전시키는 byteSwap 함수가 추가됨
  • SQL 쿼리 문자열의 포맷팅 버전을 반환하는 formatQuery 함수가 추가됨
  • ELF 실행 파일/라이브러리/객체 파일에서 디버그 심볼을 읽는 DWARF 입력 포맷을 추가함
  • RabbitMQ, NATS, FileLog 엔진에서 파싱 실패한 레코드와 오류를 저장할 수 있도록 지원함
  • 모든 자식 노드 수를 반환하여 Keeper 클라이언트를 개선함
  • 설정 조회를 위한 SHOW SETTING 문을 추가함
  • system.parts_columns 테이블에 서브스트림과 파일명 필드를 추가함
  • SHOW MERGES 쿼리 지원을 추가함
  • 기본적으로 빈 기본 키로 테이블 생성을 설정할 수 있는 옵션이 추가됨

 

Performance Improvement

  • 윈도우 함수 평가 후에 병렬 스트림 처리를 허용하기 위한 스트림 수를 보존하는 옵션을 추가함
  • 데이터가 작을 경우 더 많은 스트림을 해제할 수 있도록 함
  • RoaringBitmaps를 직렬화 전에 최적화할 수 있도록 함
  • 반복 데이터에 따라 역색인의 공간 소비를 크게 줄일 수 있는 내부 비트맵을 최적화함
  • Context 잠금에 대한 경합 수정으로 짧은 실행 시간의 동시 쿼리 성능을 개선함
  • 역색인 생성 성능을 30% 개선함
  • rowgroup 수준의 ORC 필터 다운 푸시 지원함
  • 많은 임시 파일을 사용하는 외부 집계 성능을 개선함
  • 기본적으로 이차 인덱스에 대한 마크 캐시의 크기를 적절하게 설정하여 반복적인 로딩을 방지하도록 함
  • 스킵 인덱스를 읽을 때 불필요한 인덱스 그래뉼의 재구성을 방지하도록 함
  • 실행 중에 CAST 함수 캐싱으로 IN 함수 성능을 개선함
  • ColumnVector::insertMany 및 ColumnVector::insertManyFrom의 성능을 개선함
  • Map 구독 연산을 최적화함
  • Parquet에서 구조체 필드의 프루닝 지원을 개선함
  • 쿼리 실행 시 병렬 복제본 수를 조정할 수 있는 기능을 추가함
  • 많은 임시 파일이 생성된 경우 외부 집계 메모리 소비를 최적화함
  • 비동기 소켓 모드에서 실행되는 분산 쿼리가 max_threads 제한을 준수하도록 개선함
  • Zookeeper 분산 DDL 큐에서 DDL 실행 시 스킵 가능한 항목을 캐싱함
  • 실험적인 역색인에서 너무 많은 일치를 가진 토큰을 저장하지 않도록 함
  • EmbeddedRocksDB 테이블의 쓰기 성능이 개선됨
  • 파티션 내 많은 파트가 있는 경우 Clickhouse의 전반적인 복원력을 개선함
  • 계층적 사전의 메모리 소비를 감소함
  • 모든 사전에 dictionary_use_async_executor 설정을 지원함
  • AggregateFunctionTokKGenericData 역직렬화 시 메모리 사용을 과다하게 하는 것을 방지하도록 함
  • Keeper에서 많은 감시가 있을 때 AsyncMetrics 스레드의 CPU 사용률을 감소시킴
  • EmbeddedRocksDB 저장소에 대한 근사 count 쿼리 최적화 설정을 추가함

 

Experimental Feature

  • -

 

Improvement

  • 문자열 인자를 지원하는 날짜 함수를 추가함
  • 날짜, 시간 형변환 오버플로우 동작 설정을 추가함
  • ALTER TABLE B.. 쿼리에서 쿼리 파라미터 지원을 구현함
  • EXPLAIN에서 프로세서 ID를 더 예쁘게 출력함
  • 직접 사전 생성시에 수명 필드를 거부할 수 있도록 함
  • 파티션 쿼리에 파라미터를 허용하도록 함
  • system.zookeeper_connection에 xid 컬럼을 추가함
  • 설정 리로드 후 system.server_settings엣서 올바른 서버 설정을 표시하도록 함
  • 쿼리에서 수학적 마이너스("-") 문자 지원을 추가함
  • 실험적 복제 DB 엔진에 복제 그룹을 추가함
  • S3 오류 재시도보다 쿼리 실패를 피하도록 s3_retry_attempts 값을 더 크게 설정함
  • 호스트네임 레벤슈타인 거리를 이용한 로드 밸런싱 모드를 추가함
  • 로그에서 비밀 정보를 숨기는 기능이 개선됨
  • 쿼리 플랜 상단에서만 프로젝션 분석을 수행하도록 함
  • DESCRIBE 쿼리 결과에 가상 컬럼 포함 설정을 추가함
  • OPTIMIZE 시 topimize_throw_if_noop=1 오류를 개선함
  • 동일한 Postgres 테이블을 따르는 여러 MaterializedPostgreSQL 테이블을 허용함
  • 짧은 문자열에서 음수 DateTime64 및 DateTime의 분수 부분 파싱을 허용함
  • information_schema.tables 및 information_schema.columns을 개선함
  • clickhouse-client의 "0 rows in set" 표시를 변경함
  • RENAME TABLE 명령에서 TABLE 키워드 없이 테이블 이름을 변경할 수 있도록 함
  • system.clusters에 internal_replicaiton을 추가함
  • 프록시 설정 개선 및 문서를 추가함
  • 테입블 종료 후에 INSERT에 대한 keeper 작업 재시도를 방지함
  • SHOW COLUMNS 및 관련 설정에 대해 개선을 함
  • ReplicatedMergeTree 테이블 시작 시에 예상치 못한 파트에 대한 체크 및 복구를 개선함
  • 고급 대시보드가 이제 터치 기기에서 차트를 드래그하는 것을 지원함
  • 기본 쿼리 형식을 사용하여 예외 출력을 설정할 수 있도록 함
  • MATERIALIZED VIEW 관련 일반적인 문제에 대한 개선된 메시지를 제공하도록 함
  • 현재 DB를 삭제한 후에도 몇 가지 쿼리 실행 및 DB 전환을 가능하도록 함
  • 문자열 인자를 지원하는 날짜 및 시간 함수를 확장함
  • 간단한 DELETE 쿼리로 삭제된 행을 읽을 수 있는 apply_delete_mask 설정을 추가함
  • JSON 객체로 Tuple을 직렬화할 때 null 값을 건너뛸 수 있는 기능을 추가함
  • 문자열 인코딩 날짜 인자를 지원하는 날짜 함수를 확장함
  • CSV 형식에서 CR (\r)을 포함한 비따옴표 문자열을 허용함
  • 내장 구성을 사용하여 clickhouse-keeper 실행이 가능하도록 함
  • Kafka와의 데이터 fetching 시작 문제를 방지하기 위한 최대 구성값 제한을 설정함
  • minSampleSizeContinous 함수의 오타 수정 및 이전 이름을 유지함
  • 서버 종료 전에 디스크에 손상된 파트 경로를 출력하도록 함

 

Build/Testing/Packaging Improvement

  • 도커 내 DB 초기화 절차를 개선함

 

Bug Fix

  • 역색인 파일의 하드링킹 스킵을 변경함
  • 정규 표현식과 match 함수 관련 버그를 수정함
  • ARRAY JOIN을 사용한 최적화에서 'Cannot find column' 오류가 수정됨
  • accurateCastOrNull에 대한 수정을 다시 추가함
  • AS 없이 생성된 Distributed 테이블의 컬럼에 대한 DEFAULT 감지를 수정함
  • LDAP 할당된 역할 업데이트에서의 데드락을 수정함
  • 내부 예외에 대한 오류 통계 업데이트를 억제함
  • 백업 중에 데드락을 수정함
  • Iceberg 파일 검색을 수정함
  • 세트 내 추가 컬럼에 대한 파티션 프루닝을 수정함
  • ALTER UPDATE 쿼리에서 스킵 인덱스의 재계산을 수정함
  • 백그라운드 다운로드에서 파일 시스템 캐시를 수정함
  • 압축기에서 버퍼 최종화 누락 시 메모리 누수 가능성을 방지함
  • 희소 컬럼(sparse 컬럼)에 대한 함수 실행을 수정함
  • 'SELECT FINAL FROM SummingMergeTree'에서 'Nested' 병합 오류를 수정함
  • S3를 기반으로 한 복제된 병합 트리에서 분리된 파티션 삭제 불가능 오류가 수정됨
  • MergeSortingPartialResultTransform에서의 충돌을 수정함
  • CreatingSetsTransform에서의 데이터 레이스를 수정함
  • StorageHDFS에서의 메모리 누수를 수정함
  • 배열 캐스트 연산자의 파싱 오류를 수정함
  • 가상 컬럼에 OR 필터를 사용한 쿼리의 필터링 오류를 수정함
  • MongoDB와의 연결 문제를 수정함
  • MySQL 인터페이스에서 불리언 값의 표현 방식을 수정함
  • SHOW COLUMNS 명령어에만 use_mysql_types_in_show_columns를 적용하도록 수정함
  • 커스텀 HTTP 핸들러와 쿼리 파라미터 동작 문제를 수정함
  • Values 포맷에 대한 비처리 데이터 검사를 수정함
  • ODBC를 통한 MS SQL Server 상호작용에서 'Invalid cursor state' 오류를 수정함
  • 최대 실행 시간 초과 및 'break' 오버플로 모드를 수정함
  • QueryNormailizer에서 순환 별칭으로 인한 충돌을 수정함
  • 잘못된 최적화를 비활성화하고 테스트를 추가함
  • 쿼리에서 OR 필터를 사용하여 가상 컬럼을 필터링하는 과정의 오류를 재수정함
  • Iceberg 스토리지 기능에 대한 여러 수정 및 개선을 도입함
  • CreatingSetsTransform에서 발생할 수 있는 데이터 레이스 문제의 추가 수정을 진행함
  • precise_float_parsing 설정이 true로 설된 경우 부적합한 문자열을 부동소수점으로 파싱하려고 할 때 예외를 발생시키도록 변경함
  • CTE에 상태를 가진 함수가 포함되어 있을 경우 조건부 하향식 최적화를 비활성화하도록 함
  • ASTSElectWithUnionQuery의 정규화 과정에서 쿼리에서 FORMAT을 잘못 제거하는 문제를 수정함
  • Native ORC 입력 포맷 사용 시 발생할 수 있는 잠재적인 세그먼트 오류 수정을 시도함
  • 희소(sparse) 컬럼을 사용할 때 윈도우 함수의 처리를 수정함
  • StorageNull이 서브컬럼을 지원하도록 수정함
  • 복제된 변형/병합 작업 중 발생하는 재시도 가능한 오류를 오류 로그에 기록하지 않도록 수정함
  • SHOW DATABASE LIMIT <N> 쿼리의 처리를 수정함
  • dateTime64ToSnowFlake64() 함수에서 비기본 스케일을 가진 경우의 처리를 수정함
  • Arrow 포맷에서 사전 컬럼의 입출력 처리를 수정함
  • 스키마 레지스트리에서 AvroConfluent 형식의 스키마를 가져올 때 발생하는 문제를 수정함
  • Buffer 테이블에서 동시에 ALTER와 INSERT 작업을 수행할 때 발생할 수 있는 'Block structure mismatch' 오류를 수정함
  • 최소 사용 공간(JBOD) 정책을 사용할 때 발생하는 공간 계산 오류를 수정함
  • 테이블 함수 내에서 서브쿼리를 평가할 때 스칼라 값이 누락되는 문제를 수정함
  • http_write_exception_in_output_format=1 설정이 활성화된 경우 잘못된 쿼리 결과를 반환하는 문제를 수정함
  • JSON→JSONEachrow 변환에 대한 설정이 변경될 때 스킴 ㅏ캐시 처리를 수정함
  • odbc-bridge에 오류 핸들러를 추가함

 

참고

728x90
반응형