구문
data_type— String, FixedString, Date, DateTime, 그리고 Decimal을 제외한 숫자 타입입니다. 일부 데이터 타입에서는LowCardinality가 효율적이지 않을 수 있습니다. 자세한 내용은 allow_suspicious_low_cardinality_types 설정 설명을 참조하십시오.
설명
LowCardinality는 데이터 저장 방식과 데이터 처리 규칙을 바꾸는 래퍼 타입입니다. ClickHouse는 LowCardinality 컬럼에 딕셔너리 인코딩을 적용합니다. 딕셔너리 인코딩된 데이터를 사용하면 많은 애플리케이션에서 SELECT 쿼리의 성능이 크게 향상됩니다.
LowCardinality 데이터 타입 사용 효율은 데이터의 다양성에 따라 달라집니다. 딕셔너리에 고유한 값이 10,000개 미만이면 ClickHouse는 대체로 데이터 읽기와 저장 효율이 더 높아집니다. 딕셔너리에 고유한 값이 100,000개를 초과하면 일반 데이터 타입을 사용할 때보다 ClickHouse의 성능이 더 나빠질 수 있습니다.
문자열을 다룰 때는 Enum 대신 LowCardinality 사용을 고려하십시오. LowCardinality는 더 유연하게 사용할 수 있으며, 효율도 같거나 더 높은 경우가 많습니다.
예시
LowCardinality 컬럼이 있는 테이블을 생성합니다:
- low_cardinality_max_dictionary_size
- low_cardinality_use_single_dictionary_for_part
- low_cardinality_allow_in_native_format
- allow_suspicious_low_cardinality_types
- output_format_arrow_low_cardinality_as_dictionary