> ## 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>

Содержит сведения о политиках хранения и томах, определённых в [конфигурации сервера](/ru/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure).

<div id="columns">
  ## Столбцы
</div>

* `policy_name` ([String](/ru/reference/data-types/index)) — имя политики хранения.
* `volume_name` ([String](/ru/reference/data-types/index)) — имя тома.
* `volume_priority` ([UInt64](/ru/reference/data-types/index)) — приоритет тома.
* `disks` ([Array(String)](/ru/reference/data-types/index)) — список имен всех дисков, входящих в эту политику хранения.
* `volume_type` ([Enum8('JBOD' = 0, 'SINGLE\_DISK' = 1, 'UNKNOWN' = 2)](/ru/reference/data-types/index)) — тип тома: JBOD или одиночный диск.
* `max_data_part_size` ([UInt64](/ru/reference/data-types/index)) — максимальный размер части, которую можно хранить на любом из дисков тома.
* `move_factor` ([Float32](/ru/reference/data-types/index)) — когда объем доступного пространства становится меньше этого значения, данные автоматически начинают перемещаться на следующий том, если он есть (по умолчанию — 0.1).
* `prefer_not_to_merge` ([UInt8](/ru/reference/data-types/index)) — не следует использовать эту настройку. Отключает слияние частей данных на этом томе (это вредно и приводит к снижению производительности).
* `perform_ttl_move_on_insert` ([UInt8](/ru/reference/data-types/index)) — отключает TTL move для INSERT части данных. По умолчанию (если включено), если при вставке часть данных уже подпадает под правило TTL move, она немедленно перемещается на том или диск, указанный в правиле перемещения.
* `load_balancing` ([Enum8('ROUND\_ROBIN' = 0, 'LEAST\_USED' = 1)](/ru/reference/data-types/index)) — политика балансировки дисков: `round_robin` или `least_used`.

<div id="volume-selection-on-insert">
  ## Выбор тома при `INSERT`
</div>

Когда `INSERT` создает новую часть данных, ClickHouse выбирает целевой диск,
последовательно применяя приведенные ниже правила. Используется первое правило,
которое подходит **и позволяет зарезервировать место для части**; в противном случае
(если правило не применимо, нет свободного места или превышен `max_data_part_size`)
проверка продолжается со следующим правилом.

1. **Правило TTL move** — если момент, заданный выражением `TTL <expr> TO VOLUME 'X'` (или `TO DISK 'X'`),
   для вставляемых строк уже наступил, **и**
   `perform_ttl_move_on_insert = 1` (по умолчанию) на **целевом томе TTL**
   (для `TO DISK 'X'` — на томе, содержащем диск `X`), то часть
   записывается сразу в это место назначения. Если зарезервировать место там не удается,
   вставка переходит к шагам 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` не равен нулю, описанный выше
  порядок приоритета обходится. `INSERT` пытается использовать только том с наименьшим
  `volume_priority` и генерирует `NOT_ENOUGH_SPACE`, если ни один диск в этом томе
  не удовлетворяет пороговому значению. Вставки в базу данных `system` — исключение.
</Info>

<Note>
  `perform_ttl_move_on_insert` считывается из **целевого** тома TTL,
  а не из исходного тома. Для правила `TO DISK 'X'` флаг считывается
  из тома, содержащего диск `X`. Установка этого параметра на любом другом томе
  в рамках политики не влияет на путь вставки.
</Note>

Чтобы вставки учитывали `volume_priority`, даже если
применяется правило TTL move с уже «истекшим» сроком, установите `perform_ttl_move_on_insert = 0` на
целевом томе TTL (для `TO DISK 'X'` — на томе, содержащем
диск `X`). В этом случае часть сначала записывается на том с приоритетом N, а затем
перемещается в целевой том TTL фоновой задачей перемещения (это можно увидеть в
`system.moves`). См.
[настройку `perform_ttl_move_on_insert` для движка MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure).
