> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 서버 구성에 정의된 스토리지 정책과 볼륨 정보를 담고 있는 시스템 테이블입니다.

# system.storage_policies

<div id="description">
  ## 설명
</div>

[서버 구성](/ko/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure)에 정의된 스토리지 정책과 볼륨에 관한 정보를 포함합니다.

<div id="columns">
  ## 컬럼
</div>

* `policy_name` ([String](/ko/reference/data-types/index)) — 스토리지 정책의 이름입니다.
* `volume_name` ([String](/ko/reference/data-types/index)) — 볼륨의 이름입니다.
* `volume_priority` ([UInt64](/ko/reference/data-types/index)) — 볼륨의 우선순위입니다.
* `disks` ([Array(String)](/ko/reference/data-types/index)) — 이 스토리지 정책에 포함된 모든 디스크 이름 목록입니다.
* `volume_type` ([Enum8('JBOD' = 0, 'SINGLE\_DISK' = 1, 'UNKNOWN' = 2)](/ko/reference/data-types/index)) — 볼륨 유형입니다. JBOD 또는 단일 디스크입니다.
* `max_data_part_size` ([UInt64](/ko/reference/data-types/index)) — 볼륨의 디스크에 저장할 수 있는 파트의 최대 크기입니다.
* `move_factor` ([Float32](/ko/reference/data-types/index)) — 사용 가능한 공간이 이 값보다 작아지면, 다음 볼륨이 있을 경우 데이터가 자동으로 해당 볼륨으로 이동하기 시작합니다(기본값은 0.1).
* `prefer_not_to_merge` ([UInt8](/ko/reference/data-types/index)) — 이 설정은 사용하지 마십시오. 이 볼륨에서 데이터 파트의 머지를 비활성화합니다(이는 성능 저하를 유발하므로 바람직하지 않습니다).
* `perform_ttl_move_on_insert` ([UInt8](/ko/reference/data-types/index)) — 데이터 파트 INSERT 시 TTL 이동을 비활성화합니다. 기본적으로(활성화된 경우) TTL 이동 규칙에 따라 이미 만료된 데이터 파트를 삽입하면, 해당 파트는 즉시 이동 규칙에 지정된 볼륨 또는 디스크로 이동합니다.
* `load_balancing` ([Enum8('ROUND\_ROBIN' = 0, 'LEAST\_USED' = 1)](/ko/reference/data-types/index)) — 디스크 밸런싱 정책입니다. `round_robin` 또는 `least_used`입니다.

<div id="volume-selection-on-insert">
  ## `INSERT` 시 볼륨 선택
</div>

`INSERT`가 새 데이터 파트를 생성하면 ClickHouse는 아래 규칙을 순서대로 적용해 대상 디스크를 선택합니다. **파트에 필요한 공간을 예약할 수 있는** 첫 번째 일치 규칙이 적용되며, 그렇지 않으면(규칙이 적용되지 않거나, 여유 공간이 없거나, `max_data_part_size`를 초과한 경우) 다음 규칙으로 넘어갑니다.

1. **TTL 이동 규칙** — `TTL <expr> TO VOLUME 'X'`(또는 `TO DISK 'X'`) 절이 삽입되는 행에 대해 이미 만료된 상태이고, **또한** **TTL 대상 볼륨**(`TO DISK 'X'`의 경우 디스크 `X`를 포함하는 볼륨)에서 `perform_ttl_move_on_insert = 1`(기본값)인 경우, 해당 파트는 그 대상으로 직접 기록됩니다. 해당 위치에서 예약에 실패하면 삽입은 2–4단계로 진행되며, 경고가 기록되지만 이 이유만으로 `INSERT`가 실패하지는 않습니다.
2. **`max_data_part_size`** — 볼륨은 자신의 `max_data_part_size`보다 큰 파트를 거부합니다. 이 검사는 볼륨별로 수행되며, 디스크를 직접 대상으로 하는 1단계 `TTL ... TO DISK 'X'` 예약에는 적용되지 않습니다.
3. **`volume_priority`** — 남아 있는 볼륨 중 `volume_priority` 값이 가장 낮은 볼륨이 선택됩니다. 명시적인 `<volume_priority>`가 없는 볼륨은 구성 내 위치 순서에 따라 정렬됩니다.
4. **`load_balancing`** — 볼륨이 선택되면 해당 볼륨 내부의 디스크는 `load_balancing` 정책(`round_robin` 또는 `least_used`)에 따라 선택됩니다.

<Info>
  **재정의**

  `min_free_disk_bytes_to_perform_insert` 또는
  `min_free_disk_ratio_to_perform_insert`가 0이 아니면, 위 우선순위는
  무시됩니다. `INSERT`는 `volume_priority`가 가장 낮은 볼륨만
  시도하며, 해당 볼륨에서 임계값을 만족하는 디스크가 없으면
  `NOT_ENOUGH_SPACE`를 발생시킵니다. `system` 데이터베이스에 대한 삽입은 예외입니다.
</Info>

<Note>
  `perform_ttl_move_on_insert`는 원본 볼륨이 아니라 **TTL 대상** 볼륨에서 읽습니다.
  `TO DISK 'X'` 규칙의 경우 이 플래그는 디스크 `X`를 포함하는 볼륨에서
  읽습니다. 정책의 다른 볼륨에 이 값을 설정해도 삽입 경로에는 영향을 주지 않습니다.
</Note>

이미 만료된 TTL 이동 규칙이 적용되더라도 삽입이 `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](/ko/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure)를 참조하십시오.
