system.storage_policies 시스템 테이블
system.storage_policies 시스템 테이블
system.storage_policies 는 서버 구성 에 정의된 스토리지 정책과 볼륨에 대한 정보를 담고 있어요.
출처: 문서
본문
Description
서버 구성 에 정의된 스토리지 정책과 볼륨에 대한 정보를 포함해요.
INSERT 시 볼륨 선택
INSERT 가 새 데이터 파트를 만들 때 ClickHouse는 아래 규칙을 순서대로 시도해 목적지 디스크를 선택해요. 처음으로 그리고 파트를 위한 공간을 예약할 수 있는 규칙이 적용되고, 그렇지 않으면(규칙이 적용되지 않음, 여유 공간 없음, 또는 max_data_part_size 초과) 평가는 다음 규칙으로 이어져요.
-
TTL move 규칙 — 삽입되는 행에 대해
TTL <expr> TO VOLUME 'X'(또는TO DISK 'X') 절이 이미 과거 시점이고, 그리고 TTL 목적지 볼륨 에서perform_ttl_move_on_insert = 1(기본값)이면(TO DISK 'X'의 경우 디스크X를 포함하는 볼륨), 파트는 해당 목적지로 직접 기록돼요. 그곳에서 예약이 실패하면 삽입은 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)에 따라 선택돼요.
Override(재정의)
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 를 포함하는 볼륨에서 읽혀요. 정책의 다른 볼륨에 설정하는 것은 삽입 경로에 아무 영향을 주지 않아요.
이미 “만료된” TTL move 규칙이 적용될 때도 삽입이 volume_priority 를 따르도록 강제하려면 TTL 목적지 볼륨에 perform_ttl_move_on_insert = 0 을 설정하세요(TO DISK 'X' 의 경우 디스크 X 를 포함하는 볼륨에). 그러면 파트는 먼저 우선순위-N 볼륨에 기록되고 백그라운드 move 작업(system.moves 로 관찰 가능)에 의해 TTL 목적지로 이동돼요. MergeTree 엔진의 perform_ttl_move_on_insert 설정 을 참고하세요.
Columns
-
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 move를 비활성화해요. 기본적으로(활성화된 경우) TTL move 규칙에 의해 이미 만료된 데이터 파트를 삽입하면 즉시 move 규칙에 선언된 볼륨/디스크로 이동해요. -
load_balancing(Enum8(‘ROUND_ROBIN’ = 0, ‘LEAST_USED’ = 1)) — 디스크 밸런싱 정책이에요.round_robin또는least_used.