메인 콘텐츠로 건너뛰기

ClickHouse 릴리스 1.1.54327, 2017-12-21

이 릴리스에는 이전 릴리스 1.1.54318의 버그 수정이 포함되어 있습니다:
  • 복제 중 race condition이 발생해 데이터 손실로 이어질 수 있는 버그를 수정했습니다. 이 문제는 버전 1.1.54310 및 1.1.54318에 영향을 미칩니다. 이 버전들 중 하나를 복제된 테이블과 함께 사용 중이라면 업데이트를 강력히 권장합니다. 이 문제는 로그에 Part ... from own log does not exist.와 같은 경고 메시지로 나타납니다. 로그에 이러한 메시지가 보이지 않더라도 이 문제는 여전히 해당됩니다.

ClickHouse 릴리스 1.1.54318, 2017-11-30

이 릴리스에는 이전 릴리스 1.1.54310의 버그 수정 사항이 포함되어 있습니다:
  • SummingMergeTree 엔진에서 머지 중 행이 잘못 삭제되던 문제를 수정했습니다
  • 비복제 MergeTree 엔진의 메모리 누수 문제를 수정했습니다
  • MergeTree 엔진에서 빈번한 삽입 시 성능이 저하되던 문제를 수정했습니다
  • 복제 큐 실행이 중지되던 문제를 수정했습니다
  • 서버 로그 순환 및 아카이빙 문제를 수정했습니다

ClickHouse 릴리스 1.1.54310, 2017-11-01

새로운 기능:

  • MergeTree 엔진 계열용 사용자 지정 파티셔닝 키.
  • Kafka 테이블 엔진.
  • CatBoost 모델을 로드하고 ClickHouse에 저장된 데이터에 적용하는 기능이 추가되었습니다.
  • UTC 기준 오프셋이 정수가 아닌 시간대 지원이 추가되었습니다.
  • 시간 인터벌을 사용한 산술 연산 지원이 추가되었습니다.
  • Date 및 DateTime 타입의 값 범위가 2105년까지로 확장되었습니다.
  • CREATE MATERIALIZED VIEW x TO y 쿼리가 추가되었습니다(materialized view 데이터를 저장할 기존 테이블을 지정).
  • 인수 없는 ATTACH TABLE 쿼리가 추가되었습니다.
  • SummingMergeTree 테이블에서 이름이 -Map으로 끝나는 Nested 컬럼의 처리 로직이 sumMap 집계 함수로 분리되었습니다. 이제 이러한 컬럼을 명시적으로 지정할 수 있습니다.
  • IP trie 딕셔너리의 최대 크기가 128M 엔트리로 늘어났습니다.
  • getSizeOfEnumType 함수가 추가되었습니다.
  • sumWithOverflow 집계 함수가 추가되었습니다.
  • Cap’n Proto 입력 형식 지원이 추가되었습니다.
  • 이제 zstd 알고리즘 사용 시 압축 수준을 사용자 지정할 수 있습니다.

하위 호환되지 않는 변경 사항:

  • Memory 이외의 엔진을 사용하는 임시 테이블 생성은 허용되지 않습니다.
  • View 또는 MaterializedView 엔진을 사용하는 테이블을 명시적으로 생성하는 것은 허용되지 않습니다.
  • 테이블 생성 시 샘플링 키 표현식이 프라이머리 키(primary key)에 포함되어 있는지 확인하는 새로운 검사가 추가되었습니다.

버그 수정:

  • 분산 테이블에 동기식으로 삽입할 때 발생하던 멈춤 문제가 수정되었습니다.
  • 복제된 테이블에서 파트의 추가 및 제거가 원자적으로 처리되지 않던 문제가 수정되었습니다.
  • materialized view에 삽입된 데이터에는 더 이상 불필요한 중복 제거가 적용되지 않습니다.
  • 로컬 레플리카가 지연 중이고 원격 레플리카를 사용할 수 없는 분산 테이블에 대해 쿼리를 실행해도 더 이상 오류가 발생하지 않습니다.
  • 이제 임시 테이블을 생성하는 데 default 데이터베이스에 대한 접근 권한이 필요하지 않습니다.
  • 인수 없이 배열 타입을 지정할 때 발생하던 충돌이 수정되었습니다.
  • 서버 로그가 저장된 디스크 볼륨이 가득 찼을 때 발생하던 멈춤 문제가 수정되었습니다.
  • Unix epoch의 첫 주에서 toRelativeWeekNum 함수에 발생하던 오버플로우가 수정되었습니다.

빌드 개선 사항:

  • 여러 서드파티 라이브러리(특히 Poco)가 업데이트되었으며 git 서브모듈로 전환되었습니다.

ClickHouse 릴리스 1.1.54304, 2017-10-19

새로운 기능:

  • 네이티브 프로토콜의 TLS 지원(활성화하려면 config.xml에서 tcp_ssl_port를 설정하십시오).

버그 수정:

  • 복제된 테이블에 대한 ALTER가 이제 가능한 한 빨리 실행되기 시작합니다.
  • preferred_block_size_bytes=0. 설정으로 데이터를 읽을 때 발생하던 비정상 종료를 수정했습니다.
  • Page Down을 눌렀을 때 clickhouse-client가 비정상 종료되던 문제를 수정했습니다.
  • GLOBAL INUNION ALL이 포함된 일부 복잡한 쿼리가 올바르게 해석되도록 수정했습니다.
  • FREEZE PARTITION이 이제 항상 원자적으로 동작합니다.
  • 이제 빈 POST 요청에는 코드 411 응답이 반환됩니다.
  • CAST(1 AS Nullable(UInt8)).와 같은 표현식의 해석 오류를 수정했습니다.
  • MergeTree 테이블에서 Array(Nullable(String)) 컬럼을 읽을 때 발생하던 오류를 수정했습니다.
  • SELECT dummy AS dummy, dummy AS b와 같은 쿼리를 파싱할 때 발생하던 비정상 종료를 수정했습니다.
  • 잘못된 users.xml이 있을 때도 사용자 정보가 올바르게 업데이트됩니다.
  • 실행형 딕셔너리가 0이 아닌 응답 코드를 반환할 때도 올바르게 처리하도록 수정했습니다.

ClickHouse 릴리스 1.1.54292, 2017-09-20

새로운 기능:

  • 좌표 평면상의 좌표를 처리하기 위한 pointInPolygon 함수를 추가했습니다.
  • SummingMergeTree와 유사하게 배열의 합을 계산하는 sumMap 집계 함수를 추가했습니다.
  • trunc 함수를 추가했습니다. 반올림 함수(round, floor, ceil, roundToExp2)의 성능을 개선하고 동작 로직을 바로잡았습니다. 소수와 음수에 대한 roundToExp2 함수의 동작 로직도 변경했습니다.
  • 이제 ClickHouse 실행 파일은 libc 버전에 대한 의존성이 줄었습니다. 동일한 ClickHouse 실행 파일을 다양한 Linux 시스템에서 실행할 수 있습니다. 다만 컴파일된 쿼리(기본적으로 사용되지 않는 설정 compile = 1을 사용하는 경우)를 사용할 때는 여전히 의존성이 있습니다.
  • 쿼리의 동적 컴파일에 걸리는 시간을 줄였습니다.

버그 수정:

  • 때때로 part ... intersects previous part 메시지를 생성하고 레플리카 일관성을 저하시키던 오류를 수정했습니다.
  • 종료 중 ZooKeeper를 사용할 수 없으면 서버가 멈추던 오류를 수정했습니다.
  • 레플리카 복원 시 발생하던 과도한 로깅을 제거했습니다.
  • UNION ALL 구현의 오류를 수정했습니다.
  • 블록의 첫 번째 컬럼이 배열일 때 발생하던 concat 함수 오류를 수정했습니다.
  • 이제 system.merges 테이블에 Progress가 올바르게 표시됩니다.

ClickHouse 릴리스 1.1.54289, 2017-09-13

새로운 기능:

  • 서버 관리를 위한 SYSTEM 쿼리: SYSTEM RELOAD DICTIONARY, SYSTEM RELOAD DICTIONARIES, SYSTEM DROP DNS CACHE, SYSTEM SHUTDOWN, SYSTEM KILL.
  • 배열 작업용 함수 concat, arraySlice, arrayPushBack, arrayPushFront, arrayPopBack, arrayPopFront를 추가했습니다.
  • ZooKeeper 구성에 rootidentity 매개변수를 추가했습니다. 이를 통해 동일한 ZooKeeper 클러스터에서 개별 사용자를 격리할 수 있습니다.
  • 집계 함수 groupBitAnd, groupBitOr, groupBitXor를 추가했습니다(호환성을 위해 BIT_AND, BIT_OR, BIT_XOR라는 이름으로도 사용할 수 있습니다).
  • 파일 시스템의 소켓을 지정하여 MySQL에서 외부 딕셔너리를 로드할 수 있습니다.
  • SSL(ssl_cert, ssl_key, ssl_ca 매개변수)을 통해 MySQL에서 외부 딕셔너리를 로드할 수 있습니다.
  • 사용자별 쿼리의 전체 대역폭 사용량을 제한하는 max_network_bandwidth_for_user 설정을 추가했습니다.
  • 임시 테이블에 대해 DROP TABLE을 지원합니다.
  • CSVJSONEachRow 포맷에서 Unix timestamp 형식의 DateTime 값을 읽을 수 있도록 지원합니다.
  • 이제 분산 쿼리에서는 지연된 레플리카가 기본적으로 제외됩니다(기본 임계값은 5분입니다).
  • ALTER 중에는 FIFO 잠금을 사용합니다. 따라서 지속적으로 실행되는 쿼리로 인해 ALTER 쿼리가 무기한 차단되지 않습니다.
  • 구성 파일에서 umask를 설정하는 옵션을 추가했습니다.
  • DISTINCT가 포함된 쿼리의 성능을 개선했습니다.

버그 수정:

  • ZooKeeper에서 오래된 노드를 삭제하는 프로세스를 개선했습니다. 이전에는 삽입이 매우 빈번하면 오래된 노드가 삭제되지 않는 경우가 있었고, 이로 인해 무엇보다도 서버 종료가 지연되었습니다.
  • ZooKeeper에 연결할 호스트를 선택할 때의 무작위화 동작을 수정했습니다.
  • 레플리카가 localhost인 경우 분산 쿼리에서 지연된 레플리카를 제외하는 동작을 수정했습니다.
  • Nested 구조의 요소에 대해 ALTER MODIFY를 실행한 뒤 ReplicatedMergeTree 테이블의 데이터 파트가 손상될 수 있던 오류를 수정했습니다.
  • SELECT 쿼리가 “멈춘” 것처럼 보일 수 있던 오류를 수정했습니다.
  • 분산 DDL 쿼리를 개선했습니다.
  • CREATE TABLE ... AS <materialized view> 쿼리를 수정했습니다.
  • Buffer 테이블에 대한 ALTER ... CLEAR COLUMN IN PARTITION 쿼리에서 발생하던 교착 상태를 해결했습니다.
  • JSONEachRowTSKV 포맷을 사용할 때 Enum의 잘못된 기본값(최솟값 대신 0)을 수정했습니다.
  • executable 소스를 사용하는 딕셔너리에서 좀비 프로세스가 나타나던 문제를 해결했습니다.
  • HEAD 쿼리에서 발생하던 segfault를 수정했습니다.

ClickHouse 개발 및 빌드를 위한 개선된 워크플로:

  • pbuilder를 사용해 ClickHouse를 빌드할 수 있습니다.
  • Linux에서 빌드할 때 libstdc++ 대신 libc++를 사용할 수 있습니다.
  • 정적 코드 분석 도구인 Coverage, clang-tidy, cppcheck 사용 방법이 추가되었습니다.

업그레이드 시 유의 사항:

  • 이제 MergeTree 설정 max_bytes_to_merge_at_max_space_in_pool의 기본값(머지할 데이터 파트의 최대 총 크기, 바이트 단위)이 더 커졌습니다. 100 GiB에서 150 GiB로 증가했습니다. 이로 인해 server 업그레이드 후 대규모 머지가 실행될 수 있으며, 디스크 서브시스템의 부하가 증가할 수 있습니다. server에서 사용 가능한 여유 공간이 현재 실행 중인 머지 총량의 2배보다 적으면, 작은 데이터 파트의 머지를 포함한 다른 모든 머지가 중지됩니다. 그 결과 INSERT 쿼리가 “Merges are processing significantly slower than inserts.”라는 메시지와 함께 실패할 수 있습니다. SELECT * FROM system.merges 쿼리를 사용해 이 상황을 모니터링하십시오. system.metrics table 또는 Graphite에서 DiskSpaceReservedForMerge 메트릭도 확인할 수 있습니다. 대규모 머지가 완료되면 이 문제는 저절로 해결되므로, 이를 해결하기 위해 별도로 할 작업은 없습니다. 이것이 용납하기 어렵다면 max_bytes_to_merge_at_max_space_in_pool 설정을 이전 값으로 복원할 수 있습니다. 이렇게 하려면 config.xml의 <merge_tree> 섹션으로 이동하여 <merge_tree>``<max_bytes_to_merge_at_max_space_in_pool>107374182400</max_bytes_to_merge_at_max_space_in_pool> 를 설정한 다음 server를 다시 시작하십시오.

ClickHouse 릴리스 1.1.54284, 2017-08-29

  • 이전 1.1.54282 릴리스의 버그 수정 릴리스입니다. ZooKeeper의 파트 디렉터리에서 발생하던 누수 문제를 수정했습니다.

ClickHouse 릴리스 1.1.54282, 2017-08-23

이 릴리스에는 이전 릴리스 1.1.54276의 버그 수정이 포함되어 있습니다:
  • 분산 테이블에 삽입할 때 발생하던 DB::Exception: Assertion violation: !_path.empty() 오류를 수정했습니다.
  • 입력 데이터가 ';'로 시작하는 경우 RowBinary format으로 삽입할 때 발생하던 파싱 문제를 수정했습니다.
  • 일부 집계 함수(예: groupArray())의 런타임 컴파일 중 발생하던 오류를 수정했습니다.

ClickHouse 릴리스 1.1.54276, 2017-08-16

새로운 기능:

  • SELECT 쿼리에 선택적 WITH 절이 추가되었습니다. 예시 쿼리: WITH 1+1 AS a SELECT a, a*a
  • 분산 테이블에서 INSERT를 동기식으로 수행할 수 있습니다. 모든 세그먼트에 데이터가 모두 저장된 후에만 OK가 반환됩니다. 이 기능은 설정 insert_distributed_sync=1로 활성화됩니다.
  • 16바이트 식별자를 다루기 위한 UUID 데이터 타입이 추가되었습니다.
  • Tableau 호환성을 위해 CHAR, FLOAT 및 기타 타입의 별칭이 추가되었습니다.
  • 시간을 숫자로 변환하는 toYYYYMM, toYYYYMMDD, toYYYYMMDDhhmmss 함수가 추가되었습니다.
  • 클러스터 DDL 쿼리에서 서버를 식별하기 위해 IP 주소를 호스트명과 함께 사용할 수 있습니다.
  • 함수 substring(str, pos, len).에서 비상수 인수와 음수 오프셋을 지원합니다.
  • groupArray(max_size)(column) 집계 함수에 max_size 매개변수가 추가되었으며, 성능도 최적화되었습니다.

주요 변경 사항:

  • 보안 개선: 모든 서버 파일이 0640 권한으로 생성됩니다(<umask> 구성 매개변수로 변경 가능).
  • 구문이 잘못된 쿼리에 대한 오류 메시지를 개선했습니다.
  • 대규모 MergeTree 데이터 구간을 머지할 때 메모리 사용량을 크게 줄이고 성능을 개선했습니다.
  • ReplacingMergeTree 엔진의 데이터 머지 성능을 크게 높였습니다.
  • 여러 소스 삽입을 결합하여 분산 테이블의 비동기 삽입 성능을 개선했습니다. 이 기능을 활성화하려면 distributed_directory_monitor_batch_inserts=1 설정을 사용하십시오.

하위 호환되지 않는 변경 사항:

  • 배열용 groupArray(array_column) 함수의 집계 상태에 대한 바이너리 형식이 변경되었습니다.

전체 변경 사항 목록:

  • output_format_json_quote_denormals 설정이 추가되었습니다. 이 설정을 사용하면 JSON 포맷으로 nan 및 inf 값을 출력할 수 있습니다.
  • 분산 테이블에서 읽을 때 스트림 할당을 최적화했습니다.
  • 값이 변경되지 않는 경우 읽기 전용 모드에서도 설정할 수 있습니다.
  • preferred_block_size_bytes 설정에 지정된 블록 크기 제한을 맞출 수 있도록, MergeTree 엔진에서 정수가 아닌 그래뉼도 가져올 수 있는 기능이 추가되었습니다. 목적은 큰 컬럼이 있는 테이블의 쿼리를 처리할 때 RAM 사용량을 줄이고 캐시 지역성을 높이는 것입니다.
  • toStartOfHour(x) op сonstexpr와 같은 조건에서 toStartOfHour(x)와 같은 표현식을 포함하는 인덱스를 더 효율적으로 사용할 수 있도록 개선했습니다.
  • MergeTree 엔진용 새로운 설정이 추가되었습니다(config.xml의 merge_tree 섹션).
    • replicated_deduplication_window_seconds는 복제된 테이블에서 삽입 중복 제거를 허용하는 시간(초)을 설정합니다.
    • cleanup_delay_period는 오래된 데이터를 제거하기 위한 정리 작업을 얼마나 자주 시작할지 설정합니다.
    • replicated_can_become_leader는 레플리카가 리더가 되는 것(그리고 머지를 할당하는 것)을 방지할 수 있습니다.
  • ZooKeeper에서 오래된 데이터를 제거하는 정리 작업을 가속화했습니다.
  • 클러스터 DDL 쿼리에 여러 개선 및 수정이 이루어졌습니다. 특히 주목할 만한 점은 새로운 설정 distributed_ddl_task_timeout으로, 클러스터 내 서버의 응답을 기다리는 시간을 제한합니다. DDL 요청이 모든 호스트에서 수행되지 않은 경우 응답에는 타임아웃 오류가 포함되며, 요청은 비동기 모드로 실행됩니다.
  • 서버 로그에서 스택 트레이스 표시를 개선했습니다.
  • 압축 방식에 “none” 값이 추가되었습니다.
  • config.xml에서 여러 개의 dictionaries_config 섹션을 사용할 수 있습니다.
  • 파일 시스템 소켓을 통해 MySQL에 연결할 수 있습니다.
  • system.parts 테이블에 마크 크기 정보를 바이트 단위로 담은 새로운 컬럼이 추가되었습니다.

버그 수정:

  • Merge 테이블을 사용하는 분산 테이블이 이제 _table 필드에 조건이 있는 SELECT 쿼리에서도 올바르게 동작합니다.
  • 데이터 파트를 검사할 때 ReplicatedMergeTree에서 드물게 발생하던 race condition을 수정했습니다.
  • 서버 시작 시 “리더 선출” 단계에서 멈출 수 있던 문제를 수정했습니다.
  • 데이터 소스의 로컬 레플리카를 사용할 때 max_replica_delay_for_distributed_queries 설정이 무시되던 문제를 수정했습니다.
  • 존재하지 않는 컬럼을 정리하려고 할 때 ALTER TABLE CLEAR COLUMN IN PARTITION가 올바르게 동작하지 않던 문제를 수정했습니다.
  • 빈 배열이나 문자열을 사용할 때 multiIf 함수에서 발생하던 예외를 수정했습니다.
  • Native 형식을 역직렬화할 때 과도한 메모리 할당이 발생하던 문제를 수정했습니다.
  • Trie 딕셔너리의 자동 업데이트가 올바르게 수행되지 않던 문제를 수정했습니다.
  • SAMPLE을 사용할 때 Merge 테이블에서 GROUP BY 절이 있는 쿼리를 실행하면 발생하던 예외를 수정했습니다.
  • distributed_aggregation_memory_efficient=1을 사용할 때 GROUP BY가 충돌하던 문제를 수정했습니다.
  • 이제 IN 및 JOIN의 오른쪽에 database.table을 지정할 수 있습니다.
  • 병렬 집계에 너무 많은 스레드가 사용되던 문제를 수정했습니다.
  • FixedString 인수와 함께 사용할 때 if 함수가 올바르게 동작하지 않던 문제를 수정했습니다.
  • 가중치가 0인 세그먼트에 대해 분산 테이블에서 SELECT가 잘못 동작하던 문제를 수정했습니다.
  • CREATE VIEW IF EXISTS 실행 시 더 이상 충돌이 발생하지 않습니다.
  • input_format_skip_unknown_fields=1이 설정되어 있고 음수가 있을 때 잘못 동작하던 문제를 수정했습니다.
  • 딕셔너리에 잘못된 데이터가 있을 경우 dictGetHierarchy() 함수에서 무한 루프가 발생하던 문제를 수정했습니다.
  • IN 또는 JOIN 절의 서브쿼리와 Merge 테이블을 함께 사용하는 분산 쿼리를 실행할 때 발생하던 Syntax error: unexpected (...) 오류를 수정했습니다.
  • Dictionary 테이블의 SELECT 쿼리를 잘못 해석하던 문제를 수정했습니다.
  • 20억 개가 넘는 요소를 가진 배열을 IN 및 JOIN 절에서 사용할 때 발생하던 “Cannot mremap” 오류를 수정했습니다.
  • 소스로 MySQL을 사용하는 딕셔너리의 장애 조치를 수정했습니다.

ClickHouse 개발 및 빌드를 위한 개선된 워크플로:

  • Arcadia에서 빌드를 구성할 수 있습니다.
  • gcc 7을 사용해 ClickHouse를 컴파일할 수 있습니다.
  • 이제 ccache+distcc를 사용한 병렬 빌드가 더 빨라졌습니다.

ClickHouse 릴리스 1.1.54245, 2017-07-04

새로운 기능:

  • 분산 DDL(예: CREATE TABLE ON CLUSTER)
  • 복제된 쿼리 ALTER TABLE CLEAR COLUMN IN PARTITION
  • 딕셔너리 테이블용 엔진(테이블 형태로 딕셔너리 데이터에 접근).
  • 딕셔너리 데이터베이스 엔진(이 유형의 데이터베이스에서는 연결된 모든 외부 딕셔너리에 대해 딕셔너리 테이블을 자동으로 사용할 수 있습니다).
  • 소스에 요청을 보내 딕셔너리 업데이트를 확인할 수 있습니다.
  • 수식된 컬럼 이름
  • 식별자를 큰따옴표로 묶는 기능.
  • HTTP 인터페이스의 세션.
  • 복제된 테이블(Replicated Table)에 대한 OPTIMIZE 쿼리는 leader에서만 실행되는 것은 아닙니다.

하위 호환되지 않는 변경 사항:

  • SET GLOBAL이 제거되었습니다.

소규모 변경 사항:

  • 이제 알림이 발생하면 로그에 전체 스택 트레이스가 출력됩니다.
  • 시작 시 손상되었거나 불필요한 데이터 파트 수에 대한 검증을 완화했습니다(거짓 양성이 너무 많았습니다).

버그 수정:

  • 분산 테이블에 삽입할 때 잘못된 connection이 계속 유지되던 문제가 수정되었습니다.
  • 이제 분산 테이블을 참조하는 Merge 테이블의 쿼리에서도 GLOBAL IN이 작동합니다.
  • Google Compute Engine 가상 머신에서 코어 수를 잘못 감지하던 문제가 수정되었습니다.
  • 캐시된 외부 딕셔너리의 실행형 source 동작 방식이 변경되었습니다.
  • null 문자를 포함하는 문자열 비교 문제가 수정되었습니다.
  • Float32 프라이머리 키 필드를 상수와 비교할 때의 문제가 수정되었습니다.
  • 이전에는 field 크기를 잘못 추정하면 과도하게 큰 메모리 할당이 발생할 수 있었습니다.
  • ALTER로 테이블에 추가한 널 허용 컬럼을 쿼리할 때 발생하던 충돌이 수정되었습니다.
  • 널 허용 컬럼으로 정렬할 때 행 수가 LIMIT보다 적으면 발생하던 충돌이 수정되었습니다.
  • 상수 값만으로 구성된 ORDER BY 서브쿼리의 문제가 수정되었습니다.
  • 이전에는 DROP TABLE이 실패한 후 복제된 테이블이 잘못된 상태로 남아 있을 수 있었습니다.
  • 결과가 비어 있는 스칼라 서브쿼리의 별칭이 더 이상 손실되지 않습니다.
  • 이제 컴파일을 사용하는 쿼리는 .so 파일이 손상되어도 오류로 실패하지 않습니다.
마지막 수정일 2026년 6월 10일