728x90
반응형
목적
- upgrade에 따른 데이터 정합성, 성능 간 이슈 등을 사전에 체크하여 장애 발생을 방지
- 지속적으로 dbms 생명주기를 관리하여 신기술에 대한 인지 및 도입 방안 마련
읽기 전에
- 아래 내용은 Release note 내용 중 필요하다고 판단되는 부분 위주로 정리함
- 버전의 A.B 에서 A는 년(ex_ 20의 경우 2020년)을 의미하며 B는 월(ex_ 6의 경우 6월)을 의미함. 즉, 버전에서 Release date를 유추할 수 있음
- 중복된 내용의 경우 가장 낮은 버전(이전 버전)에서 최초 기입하며 이후 중복 기입하지 않음
Upgrade Notes
- -
Backward Incompatible Change
- named collection 접근 유형을 추가함
- system.parts 내 last_removal_attemp_time > last_removal_attempt_time 으로 오타가 수정됨
- distributed_ddl_entry_format_version 버전을 5로 업데이트함
- 프로젝션 메타데이터 검사를 강화함
- hashid 실험적 기능을 제거함
New Feature
- Keeper의 외부 디스크 지원 추가로 스냅샷과 로그 저장 기능을 향상함
- 다중 디렉토리 선택 기능 개선으로 파일 관리 효율성이 증가됨
- Kafka 커넥터 Avro 스키마 인증 지원을 추가함
- 두 배열 간의 자카드 유사도 계산 기능 추가
- system.settings에 is_obsolete 컬럼 추가
- 구성 파일의 암호화 요소 지원을 구현함
- grace 해시 조인 알고리즘을 full 및 right join에 적용함
- csv 입력 포맷의 유연성을 개선함
- 문자열 처리 기능을 확장함
- jemalloc_bins 시스템 테이블을 추가함
- RowBinaryWithDefaults 데이터 포맷을 추가함
- default_temporary_table_engine 설정을 추가함
- initcap / inticapUTF8 함수를 추가함
- create table PRIMARY KEY 구문 지원을 추가함
- 로그 파일명에 날짜와 시간 포맷 지정 기능을 추가함
- HTTP 헤더를 통한 피크 메모리 사용량 통계를 제공함
- hasSubsequence(+CaseInsensitive and UTF8 versions) 함수를 추가함
- PostgreSQL 호환성 개선을 위한 array_agg 함수를 추가함
- any_value 함수를 추가함
- array_concat_agg 집계 함수를 추가함
- OCTET_LENGTH 함수 추가함
- firstLine 함수를 추가함
- Interval 데이터 타입의 KQL 스타일 포맷팅을 구현함
- SYSTEM FLUSH ASYNC INSERT QUEUE 쿼리를 추가함
- current_database 및 current_schemas 함수를 추가함
- today 및 now 함수의 별칭을 추가함
- async_deduplication_token 설정을 추가함
- disable_url_encoding 설정을 추가함
Bug Fix
- MaterializedPostgreSQL의 syncTables 문제를 수정함
- optimize_aggregators_of_group_by_keys와 관련된 projection 문제를 수정함
- 조인을 사용할 때 optimize_skip_unused_shards의 문제를 수정함
- 분수가 있는 부정적인 datetime64에 대해 formatDateTime() 함수를 수정함
- hasToken 함수의 오작동을 수정함
- 정렬하기 전에 함수를 이동하는 최적화 문제를 수정함
- FINAL을 사용할 때 Pipe::unitePipes의 Block 구조 불일치 문제를 수정함
- 모든 샤드에서 가중치가 0일 때 SIGSEGV(세그먼테이션 폴트)를 수정함
- null을 포함한 anti 조인에서 발생하는 논리적 오류를 수정함
- IN 조건을 PREWHERE 절로 이동하는 최적화에 대한 수정을 진행함
- ASOF 및 ANTI 조인에 PredicateExpressionsOptimizer를 적용하지 않도록 수정함
- ReplicatedMergeTree에서 병합 알고리즘을 사용하여 비동기 삽입 및 중복 제거를 수행할 때 발생하는 문제를 수정함
- parseSipHashKey 함수가 빈 컬럼에서 데이터를 읽을 때 발생하는 문제를 수정함
- 잘못된 EmbeddedRocksdb 테이블을 생성할 때 발생하는 세그폴트(메모리 접근 오류)를 수정함
- 몽고DB 테이블로의 삽입 작업에서 발생하는 일부 문제를 수정함
- DatabaseCatalog의 종료 과정 중에 발생할 수 있는 데드락을 수정함
- 서브쿼리 연산자를 사용할 때 발생하는 오류를 수정함
- 다중 ip 주소를 가진 호스트에 비동기적으로 연결할 때 발생하는 문제를 수정함
- 매개변수화된 사용자 정의 함수(udf)를 허용하는 기능을 추가함
- 2283-12-31 이후의 날짜에 대한 toDateTime64() 함수의 일부 문제를 수정함
- window 함수의 튜플을 사용한 order by에서 발생하는 일부 문제를 수정함
- 집계 표현식이 단조 함수를 포함할 때 잘못된 projection 분석을 수정함
- groupArrayMoving 함수에서 발생하는 오류를 수정함
- range 사전에 대한 직접 조인을 비활성화함
- sticky mutations 테스트를 수정함
- nullable 컬럼을 카운트할 때 minmax_count 투영을 사용하지 않도록 수정함
- MergeTree 및 RepliactedMergeTree가 로그 항목에 서버 시간대를 사용하도록 수정함
- 매개변수화된 뷰에서 CTE와 다중 사용 시 발생하는 문제를 수정함
- 시간 간격에 대한 표현식 템플릿을 비활성화하는 수정을 적용함
- Keeper에서 apply_snapshot 작업을 수행할 때 발생하는 문제를 수정함
- 버퍼 엔진에 데이터를 삽입할 때 발생하는 문제를 수정함
Improvement
- s3/file/url/... 테이블 함수에서 read_bytes/total_bytes_to_read를 사용하여 진행 표시줄을 더 잘 나타내도록 개선함
- 레플리카가 interserver 핸들러를 닫기 전에 대기하는 시간을 지정하는 테이블 설정인 wait_for_unique_parts_send_before_shutdown_ms를 도입함
- offset 없이 sql 표준 fetch를 사용할 수 있도록 허용함
- url/s3 테이블 함수에 대해 새로운 http_forbid_headers 섹션을 통해 http 헤더 필터링을 허용함
- sleppEachRow 함수의 한도를 올바르게 체크하도록 개선함
- geoHash 함수에서 발생하는 일부 문제를 수정함
- 비동기 삽입 플러시 쿼리를 system.query_log에 로깅함
- date_diff와 age 함수가 이제 밀리초/마이크로초 단위를 지원하며 마이크로초 정밀도로 작동함
- clickhouse-keeper-client에서 경로를 파싱하는 방법을 개선함
- clickhouse에 의존하는 타사 제품(Gluten: SparkSQL의 성능을 두 배로 늘리는 플러그인)의 버그를 수정함
- 백업/복구에 대한 s3 네이티브 복사를 비활성화하는 기능을 추가함
- system.parts 테이블에 압축된 pk 크기를 디스크에 표시하는 primary_key_size 컬럼을 추가함
- clickhouse-local을 procfs 없이 홈 디렉토리가 존재하지 않는 상태로, 그리고 glibc의 이름 해석 플러그인 없이 실행할 수 있도록 허용함
- rename_files_after_processing 설정에 전체 파일 이름에 대한 자리 표시자인 %a를 추가함
- system.parts_columns 테이블에 modification_time 컬럼을 추가함
- CSV 형식에서 단일 필드의 파싱이 실패했을 때 기본값을 삽입할 수 있도록 하는 input_format_csv_use_default_on_bad_values 파라미터를 추가함
- 예기치 않은 충돌 후에 크래시 로그를 디스크에 플러시하는 기능을 추가함
- 대시보드 페이지에서 인증과 관련 없는 오류를 표시하도록 개선함
- uuid를 UInt128로 변환하는 기능을 추가함
- Nullable 인수의 범위(range) 함수를 지원하도록 추가함
- toyear(x) = c 조건을 c1 <= x < c2로 변환하는 최적화를 수행함
- SHOW INDEX 문의 MySQL 호환성을 향상함
- use_structure_from_insertion_table_in_table_functions 설정이 MATERIALIZED 및 ALIAS 컬럼과 함께 작동하지 않는 문제를 수정함
- 이제 사전은 소스에서 유니크 키만 요청하도록 함
- format이 제공될 때 explain 쿼리에 대한 설정이 적용되지 않는 경우를 수정함
- select 쿼리와의 호환성을 위해 describe table 쿼리에서 format 앞에 settings를 허용함
- Var-Int 인코딩된 정수(예: 네이티브 프로토콜에서 사용)가 이제 전체 64비트 범위를 사용할 수 있음
- 인증서가 변경될 때 수동으로 system reload config를 실행하지 않고도 인증서를 업데이트할 수 있도함
- add index 쿼리에서 type을 지정하지 않아도 표준 sql 쿼리가 성공하도록 허용하는 allow_create_index_without_type 설정을 추가함
- 서버 시작부터 메시지가 system.text_log에 기록되도록 함
- http 엔드포인트에 여러 ip 주소가 있고 첫 번째 주소가 도달할 수 없는 경우, 세션 생성이 모든 해결된 엔드포인트를 처리하도록 개선함
- avro 입력 형식이 단일 유형만 포함하는 Union도 지원하도록 개선함
- 암시적 투영(projection) 사용을 비활성화하는 optimize_use_implicit_projections 파라미터를 추가함
- 함수 hasToken을 사용하여 무한 루프를 생성할 수 있는 가능성을 제거함
- Zookeeper의 조상 노드를 낙관적으로 생성함
- 일정 순서로 읽을 때 및 상수를 사용할 때 'Not found column ... in block' 오류를 피하도록 개선함
- query_plan_optimize_projection = 1일 때 누락된 projectionQueryAccessInfo를 다시 추가함
- ZooKeeperRetriesControl이 오류를 다시 던질 때 ZooKeeperRetriesControl 자체의 스택 트레이스가 아닌 원래 오류의 스택 트레이스를 보이도록 함
- 일부 디스크가 지원하지 않는 경우에도 zero-copy 복제 잠금을 기다리도록 함
- 이제 테이블이 종료된 후에만 인터서버 포트가 닫히도록 함
Performance Improvement
- 스파크 직렬화 포맷 자동 선택을 활성화함
- move_all_conditions_to_prewhere 및 enable_multiple_prewhere_read_steps 설정을 기본적으로 활성화함
- 할당자 조정으로 쿼리 성능을 개선함
- MergeTreePrefetchedReadPool에서 고정 크기 작업 사용 및 S3 요청을 위한 연결 풀을 사용함
- 조인의 오른쪽 부분으로 더 많은 푸시다운을 개선함
- grace_hash 조인 성능을 개선함
- OpenedFileCache에서의 잠금 대기 시간을 개선함
- PREWHERE 체인에서 pk 컬럼 조건을 마지막으로 이동함
- String 타입에 대한 COUNT(DISTINCT) 속도를 향상함
- compact에서 wide 부분으로의 수직 병합을 기본적으로 허용하여 메모리 사용량을 절감함
- pk 분석에 대한 잘못된 프로젝션 분석을 수정함
- 파일 시스템 캣 ㅣ구성 시 서버 시작 속도를 개선함
- 파일 세그먼트 크기의 하한 설정 및 백그라운드 다운로드를 개선함
- S3 및 기타 HTTP에 대한 기본 타임아웃을 감소함
- PREWHERE 섹션에서 읽기 작업 크기 결정을 위한 merge_tree_determine_task_size_by_prewhere_columns 설정을 추가함
Experimental Feature
- 실험적으로 파케이 파일을 쓰는 속도가 10배 빨라져 읽기 속도와 거의 동일하게 됨. 이 기능은 output_format_parquet_use_custom_encoder 설정을 통해 제어되며 아직 불안정한 옵션임
- PRQL을 쿼리 언어로 지원함
- 사용자 정의 디스크에 대해 디스크 이름을 추가할 수 있음
- MaterializedMySQL에서 create table ... as select ... 를 지원함
- 23.6 버전에서 새롭게 도입된 session_timezone 설정이 실험적 기능으로 강등됨
Build/Testing/Packaging Improvement
- Rust 프로젝트 관리 도구인 Cargo의 의존성을 업데이트함
참고
- clickhouse change log doc_001
https://clickhouse.com/docs/en/whats-new/changelog/
728x90
반응형
'CDBMS > Clickhouse' 카테고리의 다른 글
[Clickhouse] Ver. 23.9 Release note 요약 (0) | 2024.05.24 |
---|---|
[Clickhouse] Ver. 23.8 Release note 요약 (0) | 2024.05.23 |
[Clickhouse] Ver. 23.6 Release note 요약 (0) | 2024.05.21 |
[Clickhouse] Ver. 23.5 Release note 요약 (0) | 2024.05.20 |
[Clickhouse] Ver. 23.4 Release note 요약 (0) | 2024.05.08 |