use_* MergeTree 테이블 설정
use_* MergeTree 테이블 설정
이 페이지에서는 적응형 버퍼, granularity, 캐시 등의 사용 여부를 제어하는 use_* 계열 설정을 설명할게요. 이 설정들은 system.merge_tree_settings 테이블에서 확인할 수 있고, ClickHouse 소스 코드에서 자동으로 생성된 값이에요.
출처: 문서
본문
이 설정들은 system.merge_tree_settings 테이블에서 확인할 수 있으며, ClickHouse 소스에서 자동으로 생성돼요.
use_adaptive_write_buffer_for_dynamic_subcolumns
동적 서브컬럼(dynamic subcolumns)을 쓸 때 적응형 라이터 버퍼를 사용하여 메모리 사용량을 줄여요.
use_async_block_ids_cache
사용되지 않는 설정으로, 아무 것도 하지 않아요.
use_compact_variant_discriminators_serialization
Variant 데이터 타입의 discriminator 바이너리 직렬화에 컴팩트 모드를 활성화해요. 이 모드를 사용하면 파트에 discriminator를 저장할 때 대부분 하나의 variant만 있거나 NULL 값이 많은 경우 메모리를 훨씬 적게 사용할 수 있어요.
use_const_adaptive_granularity
비상수 적응형 granularity(기본값, index_granularity_bytes가 0이 아님)는 granular를 바이트 단위로 일정한 크기로 유지하므로 행 수가 달라져요: 쓰여지는 각 블록에 대해 granular당 행 수는 해당 블록의 평균 행 크기로 index_granularity_bytes를 나눈 값이며, index_granularity로 상한이 정해져요. granular마다 다르기 때문에 파트의 모든 granular 행 수를 메모리에 유지해야 하는데, 각 8바이트씩이라 대형 테이블에서는 수십 GB에 달할 수 있어요. 상수 적응형 granularity(이 설정)를 활성화하면 granular를 일정한 행 수로 유지하므로 바이트 단위 크기가 달라져요. 이 숫자는 쓰여지는 파트의 평균 행 크기로 한 번 계산되며, 파트는 granular마다 하나의 값 대신 이 단일 값을 저장해요. 모든 granular가 같은 수의 행을 포함하므로 granular당 추가 행 수를 저장할 필요가 없어요.
이 값에 현재 사용 중인 메모리 양은 system.asynchronous_metrics의 TotalIndexGranularityBytesInMemory 메트릭으로, 파트별로는 system.parts.index_granularity_bytes_in_memory로 보고돼요. 이 설정은 변경된 후에 쓰여지는 파트에만 적용돼요. 기존 파트에 적용하려면 ALTER TABLE … REWRITE PARTS를 사용하세요. Compact 파트는 항상 적응형 granularity를 사용해요.
use_metadata_cache
사용되지 않는 설정으로, 아무 것도 하지 않아요.
use_primary_key_cache
모든 인덱스를 메모리에 저장하는 대신 프라이머리 인덱스에 캐시를 사용해요. 매우 큰 테이블에 유용할 수 있어요.