728x90
반응형
목적
- upgrade에 따른 데이터 정합성, 성능 간 이슈 등을 사전에 체크하여 장애 발생을 방지
- 지속적으로 dbms 생명주기를 관리하여 신기술에 대한 인지 및 도입 방안 마련
읽기 전에
- 아래 내용은 Release note 내용 중 필요하다고 판단되는 부분 위주로 정리함
- 버전의 A.B 에서 A는 년(ex_ 20의 경우 2020년)을 의미하며 B는 월(ex_ 6의 경우 6월)을 의미함. 즉, 버전에서 Release date를 유추할 수 있음
- 중복된 내용의 경우 가장 낮은 버전(이전 버전)에서 최초 기입하며 이후 중복 기입하지 않음
Backward Incompatible Change
- Ver. 21.4.1
- ToStartOfIntervalFuncion 함수가 3개가 아닌 자정을 기준으로 4개의 간격 값을 가짐
- system.dictionaries 시스템 테이블의 keys 컬럼이 key.names와 key.types로 변경됨
- replica는 다른 replica가 데이터를 fetch하기 전에 LATER TABLE ATTACH PART[ITION] 명령어를 그들의 detached/ 폴더에서 검색하여 처리함
- <remote_url_allow_hosts></remote_url_allow_hosts> 로 값을 기입하지 않을 경우 이전 버전에서는 아무 동작을 안하였으나 현재 버전에서는 모든 원격 호스트의 접근을 막음. 이전 버전처럼 동작하고 싶을 경우 해당 태그를 주석처리하거나 지워야 함
New Feature
- Ver. 21.4.1
- prefer_column_name_to_alias 파라미터를 통해 alias 대신 원래 컬럼명을 사용할 수 있음. 이 것은 dbms의 공통적인 룰에 더 호환하기 위함임
- DateTime 혹은 DateTime64 데이터 타입의 timezone 이름을 반환하는 timezoneOf 함수가 추가됨
- CREATE, ALTER USER 명령어에 GRANTEE 항목이 선택적으로 추가됨. 이 것은 이 사용자로부터 모든 필수 권한을 부여받은 경우 다른 사용자 혹은 역할에 권한을 부여할 수 있음
- system.clusters 시스템 테이블에 slowdowns_count 컬럼이 추가됨. hedged requests를 사용하여 replica가 느린 반응으로 인해 얼마나 많이 다른 replica로 변경되었는지 보여줌. 또한 system.clusters 시스템 테이블에서 errors_count를 통해 실제 값을 알 수 있음
- MergeTree* 엔진에 _partition_id 라는 가상 컬럼이 추가됨. 이 것은 _partition_id를 통해 파티션 prune 하는데 사용됨. partitionID() 함수를 통해 partition id 값을 string 타입으로 알 수 있음
- CIDR 네트워크 접두사에 IPv4 나 IPv6 주소가 있을 경우 이를 테스트 하기 위해 isIPAdressInRange 함수가 추가됨
- 모든 디스크에서 freezed partition을 적절히 제거하기 위해 ALTER TABLE 'table_name' UNFREEZE [PARTITION 'part_expr'] WITH NAME 'backup_name' 구문이 추가됨
Bug Fix
- Ver. 21.4.1
- use_hedged_requests=0 이고 aysnc_socket_for_remote=1 일 때 쿼리가 취소되는 버그가 수정됨
- 카프카에서 poll 메시지를 사용하는 백그라운드 스레드 풀 이름을 수정함. 스레드 풀이 끊어진 카프카 엔진은 메시지 큐에서 메시지를 소비하지 않음
- ReplicatedMergeTree 테이블 엔진에 대한 OPTIMIZE와 ALTER 쿼리의 대기가 수정됨. 이제 쿼리는 테이블이 detached 되었거나 재시작(서버 재시작을 의미하는지?) 되엇을 때 행이 걸리지 않음
- 리눅스 kernel에 버그가 있어 aync_socket_for_remote와 use_hedged_requests 파라미터가 비활성화됨
- 쿼리에 window 함수가 있고 기본키에 순서로 읽기 최적화가 되었을 때 잘못된 ORDER BY 결과가 반환되는 버그가 수정됨
- WHERE 절이나 HAVING 조건이 GROUP BY 전에 푸쉬(기입이 아니라 실행계획 상에서?)될 때 잘못된 쿼리 결과 혹은 충돌이 발생하는 버그가 수정됨
- ReplicatedMergeTree에서 OPTIMIZE와 DROP이 동시에 실행될 경우 무한 대기가 발생할 수 있는 버그가 수정됨
- clickhouse 서버는 이제 DICTRIONARIES 및 DDLWorker 초기화 후에만 연결 수락을 시작함
- async_socket_for_remote=1이고 LIMIT이 포함된 다중 샤드에서 간단한 select 시(예를 들어 select * from remote('172.{2,3}', system.numbers) 분산 요청이 취소되는 버그가 수정됨
- optimize_skip_ununsed_shards가 활성화되었고 샤드가 사용중이지 않을 때 "Cannot find column"에러가 발생할 수 있는 버그가 수정됨
- 테이블 함수인 clusterAllReplicas 함수가 잘못된 _shard_num을 반환하는 버그가 수정됨
- MATERIALIZED VIEW에 대해 force_drop_table 플래그가 동작하지 않는 버그가 수정됨
Improvement
- Ver. 21.4.1
- PostgreSQL 테이블/데이터베이스와 dictionary source에 대한 connection pool이 추가됨
- system.query_log 시스템 테이블 내 해당 쿼리에 대한 Grant, Revoke, System 값을 가지는 query_kind 열이 추가됨
- system.processes 시스템 테이블에 current_database 열이 추가됨. 이 것은 해당 쿼리에 대한 현재 데이터베이스를 포함함
- SELECT (NULL, NULL) IN ((0,0), (3, 1)) 처럼 좌측엔 NULL이고 우측엔 NULL이 아닌 경우처럼 데이터가 호환되지 않는 타입 비교에 대해 에러를 반환하지 않고 0이 반환됨
- mERGEtREE 테이블 내 파티션 키가 Date나 DateTime 컬럼을 포함하지 않고 오직 DateTime64 컬럼을 포함할 경우 system.parts 및 system.parts_columns 시스템 테이블의 min_time, max_time 열에 해당 값이 보여짐
- source 테이블에서 타겟으로 파티션을 이동하기 위해 clickhouse-copier 내 replication_alter_partitions_sync = 1 설정이 지원됨
- distributed_ddl_entry_format_version = 2로 설정할 경우 분산 DDL 쿼리에 대해 쿼리와 세션 설정이 전파됨. distributed_ddl_output_mode 파라미터가 추가됨. 이는 none, throw(기본값), null_status_on_timeout, never_throw의 값을 가짐
- system.errors 시스템 테이블에 아래 컬럼이 추가됨
- last_error_time
- last_error_message
- last_error_stacktrace
- remote
- optimize_skip_unused_shards 파라미터에 대해 샤딩 키 값의 수를 제한하기 위해 optimize_skip_unused_shards_limit 파라미터가 추가됨
- optimize_on_insert 파라미터가 활성화되었을 때 INSERT에 대한 비어있는 parts가 생성되지 않음
Performance Improvement
- Ver. 21.4.1
- clickhouse-local 및 기타 모든 곳에서 병렬 formatting이 지원됨
- CSVWithNames 및 TSVWithNames 형식에 대한 병렬 파싱이 지원됨
- NONE 코덱을 사용하였을 때 불필요한 데이터 복제를 하지 않게 됨. 하지만 NONE은 대부분 상황에서 쓸모 없으며 기본적으로 압축(LZ4가 기본설정)을 하는 것이 권장됨. NONE이 유효한 상황은 데이터 압축을 하지 않았을 때임
- max_rows_to_group_by 파라미터가 작은 값을 가지고 group_by_overflow_mode='any' 일 때 GROUP BY 성능이 개선됨
- SELECT ... FINAL ... WHERE 쿼리에 대한 최적화 개선이 이루어짐
- soptimize_aggregation_in_order 파라미터가 활성화일 때 정렬키의 순서대로 집계에 대한 성능이 개선됨
Experimental Feature
- Ver. 21.4.1
- -
Build/Testing/Packaging Improvement
- Ver. 21.4.1
- -
Contents that needs to be tested
- Ver. 21.4.1
- -
참고
- clickhouse change log doc_001
https://clickhouse.com/docs/en/whats-new/changelog/
728x90
반응형
'CDBMS > Clickhouse' 카테고리의 다른 글
[Clickhouse] Ver. 21.6 Release note 요약 (0) | 2024.04.14 |
---|---|
[Clickhouse] Ver. 21.5 Release note 요약 (0) | 2024.04.13 |
[Clickhouse] Ver. 21.3 Release note 요약 (0) | 2024.04.11 |
[Clickhouse] Ver. 21.2 Release note 요약 (0) | 2024.04.10 |
[Clickhouse] Ver. 21.1 Release note 요약 (0) | 2024.01.08 |