본문 바로가기
CDBMS/Clickhouse

[Clickhouse] Ver. 21.3 Release note 요약

by 연습장이 2024. 4. 11.
728x90
반응형

목적

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

 

읽기 전에

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

 

Backward Incompatible Change

  • Ver. 21.3
    • table TTL을 사용하여 이전 구문으로 MergeTree tabtle을 생성할 수 없음. 하지만 이전 테이블을 Attach하는 것은 가능함
    • 모든 대소문자를 구분하지 않는 함수의 이름이 표준 표현으로 재작성됨

 

New Feature

  • Ver. 21.3
    • file 엔진 설정과 관련하여 engine_file_empty_if_not_exists, engine_file_truncate_on_insert 파라미터가 추가됨
    • system.part_log 시스템 테이블에 event_time_microseconds 열이 추가됨
    • 분산 테이블에서 특정한 샤드로 데이터를 삽입할 수 있도록 insert_shard_id 파라미터가 추가됨
    • extractTextFromHTML 함수가 추가됨
    • MergeTree* 엔진에 대한 테이블 수준의 쿼리 동시성 제어 파라미터가 2가지 추가됨
      • max_concurrent_queries : 이 테이블과 관련된 동시 수행할 수 있는 쿼리의 수를 제한함
      • min_marks_to_honor_max_concurrent_queries : 쿼리가 최소한 이 marks 수를 읽는 경우에만 이전 설정을 적용하도록 함

 

Bug Fix

  • Ver. 21.3
    • 주키퍼에 대한 중복 재연결과 단일 클릭하우스 서버에 대한 이중 활성화된 세션의 가능성이 수정됨
    • non replicated MergeTree 테이블 엔진에 대해 조건에 테이블 자체가 포함된 경우 ALTER DELETE mutation에서 데드락이 발생하는 버그가 수정됨
    • ALTER MODIFY COLUMN 쿼리가 파티션 키, skip indices, TTLs 등을 올바르게 변경하도록 수정됨
    • EXPLIAN 명령어가 UNION과 충돌하는 버그가 수정됨
    • 사용자 지정(기본이 아닌) 주키퍼 클러스터 내 Replicated*MergeTree가 삭제될 경우 metadata가 누수되는 버그가 수정됨
    • ALTER MODIFY COLUMN 구문에 의해 생성된 mutation이 의도적으로 실패하는 버그가 수정됨
    • 쿼리 취소 시 "Empty task was returned from async task queue" 에러가 반환되는 버그가 수정됨
    • 원격 쿼리로부터 알 수 없는 패킷을 받은 경우 충돌이 발생할 수 있는 버그가 수정됨
    • float 타입의 키에 대해 transform 함수가 적절히 동작하지 않는 버그가 수정됨
    • 서브쿼리에 WITH alias를 전파할 때 무한 루프에 빠지는 버그가 수정됨
    • Replicated 테이블 엔진군에 대하여 실패된 백그라운드 작업의 너무 잦은 재시도가 수정됨
    • *CollapsingMergeTree와 ReplacingMergeTree 테이블 엔진에 대해 version 열을 삭제하거나 rename이 제한됨

 

Improvement

  • Ver. 21.3
    • 만약 삭제하고자 하는 컬럼이 materialized view에 의해 참조되고 있다면 삭제가 안됨
    • distributed_group_by_no_merge를 통해 initiator에서 정렬된 블록에 대해서만 병합함
    • 배열과 튜플의 결합된 데이터 타입에 대한 직렬화가 개선됨
    • 분산 DDL 작업 수행과 DDL 큐 정리 사이의 경쟁이 수정됨. 이제 활성화된 작업자가 있다면 주키퍼에서 DDL task는 제거되지 않음
    • integer가 Decimal에 맞지 않는 경우 이제 "ARGUMENT_OUT_OF_BOUND" 에러가 반환됨
    • SYSTEM FULSH DISTRIBUTED 명령어가 락 되지 않음(무엇과 비교하여?)
    • CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT를 제공하여 startup 시 access_management 파라미터를 설정할 수 있음. 기본 값은 활성안함임
    • Quota 개선을 위해 SHOW TABLES 구문은 이제 2개의 쿼리가 아닌 하나의 쿼리로 계산됨. SYSTEM 쿼리는 이제 quota를 소모함
    • system.zookeeper 시스템 테이블에서 path IN (set) 구문이 지원됨
    • system.tables 시스템 테이블에서 MaterializeMySQL 테이블의 모든 상세 정보를 볼 수 있음
    • 분산 테이블에 데이터를 삽입할 때 매치되는게 없다면 블록의 구조를 변환함
    • system.distributed_ddl_queue 테이블이 개선됨. 재시작 후 MaxDDLEntryID는 마지막 값으로 초기화됨. 이러한 PR 전, 새로운 DDL 작업이 수행될 때까지 MaxDDLEntryID는 0으로 유지됨

 

Performance Improvement

  • Ver. 21.3
    • 테이블에 행 수준 보안 표현식이 명시될 경우 PREWHERE과 그에 해당하는 최적화가 지원됨
    • distributed_aggregation_memory_efficient 파라미터가 기본적으로 동작됨. 이 것은 메모리 사용률을 낮추고 분산 쿼리의 성능을 개선함
    • 여러 fixed size 키에 대한 GROUP BY 성능이 개선됨
    • http 서버를 일부 다시 구현하여 들어오고 나가는 데이터의 복사본을 줄임. 이 것은 http를 통해 긴 레코드를 삽입할 때 최대 1.5배까지 성능이 개선됨
    • Memory table에 대해 compress 파라미터가 추가됨. 이는 테이블이 더 적은 RAM을 사용하게 함. 다음과 같은 이유로 Memory 테이블이 MergeTree 테이블보다 속도가 느릴 수 있음
      • 압축의 부재
      • 블록의 정적인 사이즈
      • indices와 prewhere의 부재
    • do_not_merge_across_partitions_select_final 설정이 활성화되었을 때, level > 0 이고 단일 part에 대하여 SELECT ... FINAL 구문이 병렬로 처리됨

 

Experimental Feature

  • Ver. 21.3
    • 실험적인 Replicated database 엔진이 추가됨. 이 것은 여러 호스트들 사이에 DDL 쿼리를 복제함

 

Build/Testing/Packaging Improvement

  • -

 

Contents that needs to be tested

  • -

 

참고

728x90
반응형