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이 아니면 위 우선순위는 무시돼요. INSERTvolume_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.