설명
컬럼
policy_name(String) — 스토리지 정책의 이름입니다.volume_name(String) — 볼륨 이름입니다.volume_priority(UInt64) — 볼륨 우선순위입니다.disks(Array(String)) — 이 스토리지 정책에 포함된 모든 디스크 이름 목록입니다.volume_type(Enum8(‘JBOD’ = 0, ‘SINGLE_DISK’ = 1, ‘UNKNOWN’ = 2)) — 볼륨 유형입니다. JBOD 또는 단일 디스크입니다.max_data_part_size(UInt64) — 볼륨의 어느 디스크에든 저장할 수 있는 파트의 최대 크기입니다.move_factor(Float32) — 사용 가능한 공간이 이 값보다 적어지면, 다음 볼륨이 있을 경우 데이터가 자동으로 해당 볼륨으로 이동하기 시작합니다(기본값: 0.1).prefer_not_to_merge(UInt8) — 이 설정은 사용하지 마십시오. 이 볼륨에서 데이터 파트의 머지를 비활성화합니다(이는 바람직하지 않으며 성능 저하를 초래합니다).perform_ttl_move_on_insert(UInt8) — 데이터 파트 INSERT 시 TTL 이동을 비활성화합니다. 기본적으로(활성화된 경우) TTL 이동 규칙에 따라 이미 만료된 데이터 파트를 삽입하면, 즉시 이동 규칙에 지정된 볼륨/디스크로 이동합니다.load_balancing(Enum8(‘ROUND_ROBIN’ = 0, ‘LEAST_USED’ = 1)) — 디스크 밸런싱 정책으로,round_robin또는least_used입니다.
INSERT 시 볼륨 선택
INSERT가 새 데이터 파트를 생성하면 ClickHouse는 아래 규칙을 순서대로 적용해 대상 디스크를 선택합니다. 파트에 필요한 공간을 예약할 수 있는 첫 번째 일치 규칙이 적용되며, 그렇지 않으면(규칙이 적용되지 않거나, 여유 공간이 없거나, max_data_part_size를 초과한 경우) 다음 규칙으로 넘어갑니다.
- TTL 이동 규칙 —
TTL <expr> TO VOLUME 'X'(또는TO DISK 'X') 절이 삽입되는 행에 대해 이미 만료된 상태이고, 또한 TTL 대상 볼륨(TO DISK 'X'의 경우 디스크X를 포함하는 볼륨)에서perform_ttl_move_on_insert = 1(기본값)인 경우, 해당 파트는 그 대상으로 직접 기록됩니다. 해당 위치에서 예약에 실패하면 삽입은 2–4단계로 진행되며, 경고가 기록되지만 이 이유만으로INSERT가 실패하지는 않습니다. max_data_part_size— 볼륨은 자신의max_data_part_size보다 큰 파트를 거부합니다. 이 검사는 볼륨별로 수행되며, 디스크를 직접 대상으로 하는 1단계TTL ... TO DISK 'X'예약에는 적용되지 않습니다.volume_priority— 남아 있는 볼륨 중volume_priority값이 가장 낮은 볼륨이 선택됩니다. 명시적인<volume_priority>가 없는 볼륨은 구성 내 위치 순서에 따라 정렬됩니다.load_balancing— 볼륨이 선택되면 해당 볼륨 내부의 디스크는load_balancing정책(round_robin또는least_used)에 따라 선택됩니다.
재정의
min_free_disk_bytes_to_perform_insert 또는
min_free_disk_ratio_to_perform_insert가 0이 아니면, 위 우선순위는
무시됩니다. INSERT는 volume_priority가 가장 낮은 볼륨만
시도하며, 해당 볼륨에서 임계값을 만족하는 디스크가 없으면
NOT_ENOUGH_SPACE를 발생시킵니다. system 데이터베이스에 대한 삽입은 예외입니다.perform_ttl_move_on_insert는 원본 볼륨이 아니라 TTL 대상 볼륨에서 읽습니다.
TO DISK 'X' 규칙의 경우 이 플래그는 디스크 X를 포함하는 볼륨에서
읽습니다. 정책의 다른 볼륨에 이 값을 설정해도 삽입 경로에는 영향을 주지 않습니다.volume_priority를 따르도록 강제하려면, TTL 대상 볼륨(TO DISK 'X'의 경우 디스크 X를 포함하는 볼륨)에서 perform_ttl_move_on_insert = 0으로 설정하십시오. 그러면 파트는 먼저 priority-N 볼륨에 기록된 뒤 백그라운드 이동 작업을 통해 TTL 대상으로 이동됩니다(system.moves에서 확인 가능). 자세한 내용은
perform_ttl_move_on_insert setting on the MergeTree engine를 참조하십시오.