LowCardinality 데이터 타입

LowCardinality 데이터 타입

다른 데이터 타입의 내부 표현을 사전(dictionary) 인코딩으로 바꿔주는 타입이에요. 사전에 10,000개 미만의 서로 다른 값이 있으면 데이터 읽기·저장 효율이 대부분 더 높아져요.

출처: 문서

본문

다른 데이터 타입의 내부 표현을 사전 인코딩(dictionary-encoded)으로 바꿔줘요.

문법 (Syntax)

LowCardinality(data_type)

매개변수 (Parameters)

설명 (Description)

LowCardinality는 데이터 저장 방법과 데이터 처리 규칙을 바꾸는 상위 구조(superstructure)예요. ClickHouse는 LowCardinality 컬럼에 사전 코딩(dictionary coding)을 적용해요. 사전 인코딩된 데이터로 작업하면 많은 애플리케이션에서 SELECT 쿼리의 성능이 크게 향상돼요.

LowCardinality 데이터 타입의 효율은 데이터 다양성에 따라 달라져요. 사전에 10,000개 미만의 서로 다른 값이 있으면 ClickHouse는 대부분 데이터 읽기·저장의 효율이 더 높아요. 사전에 100,000개 이상의 서로 다른 값이 있으면 ClickHouse는 일반 데이터 타입을 사용할 때보다 성능이 나빠질 수 있어요.

문자열을 다룰 때 Enum 대신 LowCardinality를 사용하는 것을 고려해 볼게요. LowCardinality는 사용에서 더 많은 유연성을 제공하며 종종 동일하거나 더 높은 효율을 보여줘요.

예시 (Example)

LowCardinality 컬럼이 있는 테이블 만들기:

CREATE TABLE lc_t
(
    `id` UInt16,
    `strings` LowCardinality(String)
)
ENGINE = MergeTree()
ORDER BY id

설정:

함수:

더 알아보기 (Learn more)