본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 23.5 Release note 요약

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

목적

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

 

읽기 전에

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

 

Upgrade Notes

  • mark와 primary key에 대한 압축이 기본적으로 제공됨. 만약 이 기능을 활성화하면 22.8 이하 버전으로는 다운그레이드 할 수 없게됨. 사실 이 기능은 이미 22.9 버전에서 추가되었음. 만약 22,8 이하 버전에서 업그레이드 한다면, 한번에 복제본을 모두 업그레이드 하거나 중간 버전을 경유하는게 좋음
  • 로컬 오브젝트 스토리지가 s3 오브젝트 스토리지와 일관성 있게 동작함. 또한 독립적인 스토리지로 구성할 수 있게 되었음. 로컬 오브젝트 스토리지 위에 있는 캐시가 이전 버젼과 호환되지 않기 때문에 이 기능도 마찬가지로 호환이 안됨
  • parallelize_output_from_storages, input_format_parquet_preserve_order 파라미터의 기본 값이 변경됨. 이에 따라 CSV나 파케이 파일로부터 읽기 동작 시 클릭하우스가 행을 재정렬하는데 성능이 개선됨
  • optimize_use_projections 파라미터 설정이 활성화됨. projections 기능이 운영단계에서 사용될 수 있도록 준비가 되었으며 이 기능은 조회 쿼리시 사용됨
  • "groupArray returns cannot be nulllable" 변경사항을 되돌림
  • enable_memory_bound_merging_of_aggregation_results 파라미터가 기본적으로 활성화됨. 만약 22.12 이전버전에서 업데이트할 경우 업데이트 작업이 끝날 때까지 해당 기능은 끄는 것을 권장함

 

Backward Incompatible Change

  • -

New Feature

  • 이제 쿼리 캐시가 운영 환경의 워크로드에 사용될 수 있음
  • 지리적 데이터 타입(예를 들어 Point, Ring, Polygon, MultiPolygon 등)이 운영 환경에서 쓰일 수 있도록 준비됨
  • 서버에 config.xml 파일의 default_password_type 항목으로 CREATE USER user IDENTIFIED BY 'password' 같은 쿼리의 비밀번호 타입이 자동적으로 설정됨
  • INTO OUTFILE 'file.txt' APPEND 키워드가 새로 도입됨
  • 키퍼 연결에 대한 정보를 보여주는 system.zookeeper_connection 시스템 테이블이 추가됨
  • 테이블 구조를 무작위로 발생시키는 generateRandomstructure 함수가 추가됨. 이 함수는 보통 generateRandom 함수와 같이 사용됨
  • merges와 mutation등 백그라운드 태스크에 대한 MemoryTracker가 추가됨. merges_mutations_memory_usage_soft_limit, mergs_mutations_memory_usage_to_ram_ratio 파라미터가 추가되어 merges, mutations에 대한 soft memory limit을 나타내줌. 이 값에 도달하면 클릭하우스는 새로운 merge나 mutation 작업을 수행하지 않음. 또한 MergesMutationsMemorytracking 메트릭 지표가 도입됨
  • 유저에 특정 권한을 부여하기 위해 users.xml 파일 내 grants 필드를 추가함
  • grace 해쉬 조인 알고리즘을 사용하여 full/right join이 지원됨(이열)
  • Clickhouse-client 툴이 이제 --query(또는 -q)가 없어도 --multiquery 후에 쿼리를 받아들임. 예를 들어 clickhouse-client --multiquery "select 1; select 2;" 가 됨
  • space 함수가 추가됨. 특정 인자만큼 스페이스( )를 반복함
  • ignore_data_skipping_indices 파라미터를 통해 스킵 인덱스를 무시할 수 있음
  • system.user_processes 시스템 테이블이 추가됨. 사용자 수준에서 memory 정보와 ProfileEvents를 볼 수 있는 SHOW USER PROCESSES 쿼리가 추가됨

 

Bug Fix

  • 널허용 pk를 사용했을 때 쿼리 결과가 잘못되는 버그가 수정됨
  • date 관련 키에 대한 인덱스 분석이 잘못되는 버그가 수정됨

 

Improvement

  • BACKUP 명령어는 백업하는 동안 암호화된 디스크로부터 데이터를 해독하지 않음. 대신 암호화된 형태로 데이터를 백업을 하여 저장함. 이러한 백업은 같은(혹은 확장된) 암호 키와 함께 암호화된 디스크에 대해서만 복구할 수 있음
  • ATTACH PARTITION FROM과 REPLACE PARTITION FROM의 FROM 부분에 임시 테이블을  사용할 가능성이 추가됨
  • MergeTree 테이블에 async_insert 설정이 추가됨. 이 기능은 async_insert 쿼리 레벨 설정과 같은 의미이며 특정 테이블에 대해 비동기 삽입이 가능하게 해줌. 하지만 clickhouse-client에서는 이 기능이 안됨
  • first_value와 last_value가 NULL 값을 받아들이도록 확장함
  • 클러스터 테이블 함수는 항상 사용할 수 없는 샤드는 건너뜀
  • CSV 파일의 헤더에 비어있는 컬럼을 포함할 수 있게 됨
  • system.clusters 시스템 테이블에 복제된 데이터베이스의 복제본에 대한 정보를 나타내는 database_shard_name, database_replica_name, is_active 컬럼이 추가됨. SYSTEM DROP DATABASE REPLICA 쿼리에 FROM SHARD 옵션이 추가됨
  • 복제된 테이블의 메타데이터가 저장된 정보가 어느 주키퍼 클러스터에 있는지 나타내기 위해 system.replicas 시스템 테이블에 zookeeper_name 컬럼이 추가됨
  • IN 연산자가 Date, Date32의 비교를 지원함
  • HDFS에서 삭제 코드 지원함
  • 보조 주키퍼 클러스터에서 SYSTEM DROP REPLICA 가 구현됨
  • MongoDB에 배열 데이터 타입이 추가됨
  • ALTER UPDATE, ATLER DELETE 등 mutations를 만드는 쿼리에 끝나지 않은 mutations 작업이 이미 많을 경우 이를 지연시키거나 예외를 던지는 number_of_mutations_to_delay, number_of_mutations_to_throw 파라미터가 추가됨
  • MongoDB 딕셔너리에 대한 연결 옵션이 추가됨
  • groupBitAnd/Or/Xor 등의 집계 함수가 이제 부호가 있는 정수형 데이터에 정상 동작함
  • system.processors_profile_log 시스템 테이블에 initial_query_id 컬럼이 추가됨
  • 시스템 로그 테이블은 이제 독자적인 정렬키를 가질 수 있음
  • 어느 파티션이 계산에 참여했는지를 알기 위해 system.query_log 시스템 테이블에 partitions 컬럼이 추가됨
  • 카프카 테이블 엔진이 이제 alias 컬럼을 사용할 수 있음
  • PostgreSQL에 UUID 데이터 타입이 추가됨
  • Postgresql에서 LIMIT n이 명시되었음에도 모든 데이터를 읽는 부분이 수정됨
  • config.xml를 통해 grant와 함게 role을 명시할 수 있도록 users.xml 내 roles 필드가 추가됨

 

Performance Improvement

  • 로컬 파일시스템에서 읽는 읽기 버퍼의 기본 크기가 약간 더 개선됨. 또한 max_read_buffer_size_local_fs와 max_read_buffer_size_remote_fs 파라미터가 추가됨
  • 적절할 때 LowCardinality를 적용하여 system.query_log와 system.query_thread_log 테이블을 최적화함. 이 테이블에 대한 쿼리가 더 빨라질 것임
  • 병렬 읽기를 통해 로컬에서 파케이 파일을 읽을 때 성능이 개선됨
  • 작은 왼쪽 테이블에 큰 오른쪽 테이블을 조인할 때 right/full 조인이 최대 2배까지 성능이 개선됨
  • grace_hash 조인에 해시 테이블의 크기를 예약하려고 시도함
  • Keeper의 성능이 개선됨. 이제 처리하는 동안 같은 요청을 두번 직렬화하지 않고 큰 요청에 대한 역직렬화 결과를 캐시함. 해당 기능은 min_request_size_for_cache 파라미터를 통해 조정할 수 있음

 

Experimental Feature

  • 병렬 복제본이 활성화되면 사용할 수 없는 서버는 항상 건너 뒤며 이 기능은 기본적으로 활성화되어 있으며 skip_unavailable_shards로 제어됨

 

Build/Testing/Packaging Improvement

  • -

 

참고

728x90
반응형