storage_configuration 서버 설정

storage_configuration 서버 설정

이 설정들은 ClickHouse 서버의 다중 디스크(multi-disk) 스토리지 구성을 정의해요. 여러 디스크와 스토리지 정책을 조합해 데이터를 계층적으로 저장할 수 있어요. ClickHouse 소스 코드에서 자동으로 생성된 참조 문서예요.

출처: 문서

본문

이 설정들은 ClickHouse 서버를 구성하며 ClickHouse 소스 코드에서 자동으로 생성돼요.

storage_configuration

스토리지의 다중 디스크 구성을 허용해요.

스토리지 구성은 다음 구조를 따릅니다:

<storage_configuration>
    <disks>
        <!-- configuration -->
    </disks>
    <policies>
        <!-- configuration -->
    </policies>
</storage_configuration>

디스크 구성 (Configuration of disks)

disks의 구성은 아래 주어진 구조를 따릅니다:

<storage_configuration>
    <disks>
        <disk_name_1>
            <path>/mnt/fast_ssd/clickhouse/</path>
        </disk_name_1>
        <disk_name_2>
            <path>/mnt/hdd1/clickhouse/</path>
            <keep_free_space_bytes>10485760</keep_free_space_bytes>
        </disk_name_2>
        <disk_name_3>
            <path>/mnt/hdd2/clickhouse/</path>
            <keep_free_space_bytes>10485760</keep_free_space_bytes>
        </disk_name_3>
        ...
    </disks>
</storage_configuration>

위의 하위 태그는 disks에 대해 다음 설정을 정의합니다:

설정 설명
<disk_name_N> 고유해야 하는 디스크 이름.
path 서버 데이터(data와 shadow 카탈로그)가 저장될 경로. /로 끝나야 해요
keep_free_space_bytes 디스크에 예약된 여유 공간의 크기.

디스크의 순서는 중요하지 않아요.

정책 구성 (Configuration of policies)

위의 하위 태그는 policies에 대해 다음 설정을 정의합니다:

설정 설명
policy_name_N 정책 이름. 정책 이름은 고유해야 해요.
volume_name_N 볼륨 이름. 볼륨 이름은 고유해야 해요.
disk 볼륨 안에 있는 디스크.
max_data_part_size_bytes 이 볼륨의 어떤 디스크에도 상주할 수 있는 데이터 청크의 최대 크기. merge 결과 청크 크기가 max_data_part_size_bytes보다 클 것으로 예상되면 그 청크는 다음 볼륨에 기록돼요. 기본적으로 이 기능은 새/작은 청크를 핫(SSD) 볼륨에 저장하고, 큰 크기로 커지면 콜드(HDD) 볼륨으로 옮기는 것을 허용해요. 정책에 볼륨이 하나뿐이면 이 옵션을 사용하지 마세요.
move_factor 볼륨에서 사용 가능한 여유 공간의 비율. 공간이 이보다 줄어들면, 다음 볼륨이 있다면 데이터가 다음 볼륨으로 옮겨지기 시작해요. 전송 시 청크는 크기가 큰 것부터 작은 것 순서(내림차순)로 정렬되고, move_factor 조건을 충족하기에 충분한 총 크기의 청크가 선택되며, 전체 청크 크기가 부족하면 모든 청크가 옮겨져요.
perform_ttl_move_on_insert 삽입 시 TTL이 만료된 데이터를 이동하는 것을 비활성화해요. 기본적으로(활성화 시) 수명 이동 규칙에 따라 이미 만료된 데이터를 삽입하면, 즉시 이동 규칙에 지정된 볼륨/디스크로 이동돼요. 대상 볼륨/디스크가 느린 경우(예: S3) 삽입이 크게 느려질 수 있어요. 비활성화하면 만료된 데이터 부분은 기본 볼륨에 기록된 후 만료 TTL 규칙에 지정된 볼륨으로 즉시 이동돼요.
load_balancing 디스크 밸런싱 정책, round_robin 또는 least_used.
least_used_ttl_ms 모든 디스크의 사용 가능한 공간을 업데이트하는 타임아웃(밀리초)을 설정해요(0 - 항상 업데이트, -1 - 업데이트 안 함, 기본값은 60000). 디스크가 ClickHouse에서만 사용되고 파일 시스템의 실시간 리사이즈 대상이 아니라면 -1 값을 사용할 수 있어요. 그 외의 경우에는 결국 잘못된 공간 할당으로 이어질 수 있으므로 권장하지 않아요.
prefer_not_to_merge 이 볼륨에서 데이터 파트를 병합하는 것을 비활성화해요. 참고: 잠재적으로 해로우며 성능 저하를 일으킬 수 있어요. 이 설정을 활성화하면(하지 마세요) 이 볼륨에서 데이터 병합이 금지돼요(좋지 않아요). 이는 ClickHouse가 느린 디스크와 상호작용하는 방식을 제어할 수 있게 해줘요. 전혀 사용하지 않는 것을 권장해요.
volume_priority 볼륨이 채워지는 우선순위(순서)를 정의해요. 값이 작을수록 우선순위가 높아요. 파라미터 값은 자연수여야 하며, 1부터 N(N은 지정된 가장 큰 값)까지 빈틈없이 덮어야 해요.

volume_priority에 대해:

  • 모든 볼륨에 이 파라미터가 있으면 지정된 순서대로 우선순위가 적용돼요.
  • 일부 볼륨에만 있다면, 이 파라미터가 없는 볼륨은 우선순위가 가장 낮아요. 있는 볼륨은 태그 값에 따라 우선순위가 정해지고, 나머지 볼륨의 우선순위는 구성 파일에서 서로에 대한 설명 순서로 결정돼요.
  • 어떤 볼륨에도 이 파라미터가 없으면, 구성 파일의 설명 순서로 순서가 결정돼요.
  • 볼륨의 우선순위는 같지 않을 수 있어요.

storage_metadata_write_full_object_key

디스크 메타데이터 파일을 VERSION_FULL_OBJECT_KEY 형식으로 기록해요. 기본적으로 활성화되어 있어요. 이 설정은 deprecated예요.

storage_shared_set_join_use_inner_uuid

활성화하면 SharedSet와 SharedJoin 생성 시 내부 UUID가 생성돼요. ClickHouse Cloud 전용이에요.

더 알아보기 (Learn more)