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 전용이에요.