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

> サーバー設定で定義されたストレージポリシーとボリュームに関する情報を含むシステムテーブル。

# system.storage_policies

<div id="description">
  ## 説明
</div>

[サーバー設定](/ja/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure) で定義されるストレージポリシーとボリュームに関する情報です。

<div id="columns">
  ## カラム
</div>

* `policy_name` ([String](/ja/reference/data-types)) — ストレージポリシーの名前。
* `volume_name` ([String](/ja/reference/data-types)) — ボリュームの名前。
* `volume_priority` ([UInt64](/ja/reference/data-types)) — ボリュームの優先度。
* `disks` ([Array(String)](/ja/reference/data-types)) — このストレージポリシーに含まれるすべてのディスク名の一覧。
* `volume_type` ([Enum8('JBOD' = 0, 'SINGLE\_DISK' = 1, 'UNKNOWN' = 2)](/ja/reference/data-types)) — ボリュームの種類。JBOD または単一ディスクです。
* `max_data_part_size` ([UInt64](/ja/reference/data-types)) — ボリューム内のいずれかのディスクに保存できるデータパーツの最大サイズ。
* `move_factor` ([Float32](/ja/reference/data-types)) — 利用可能な空き容量がこの係数を下回ると、データが自動的に次のボリュームへ移動し始めます (存在する場合。デフォルト値は 0.1) 。
* `prefer_not_to_merge` ([UInt8](/ja/reference/data-types)) — この設定は使用しないでください。このボリュームでのデータパーツのマージを無効にします (これは有害で、パフォーマンス低下を招きます) 。
* `perform_ttl_move_on_insert` ([UInt8](/ja/reference/data-types)) — データパーツの INSERT 時の TTL move を無効にします。デフォルトでは (有効な場合) 、TTL move ルールですでに期限切れになっているデータパーツを insert すると、move ルールで指定されたボリュームまたはディスクへ直ちに移動します。
* `load_balancing` ([Enum8('ROUND\_ROBIN' = 0, 'LEAST\_USED' = 1)](/ja/reference/data-types)) — ディスクの負荷分散ポリシー。`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'`)
   句の時刻がすでに過ぎており、**かつ**
   **TTL 宛先ボリューム** (`TO DISK 'X'` の場合はディスク `X` を含むボリューム) で
   `perform_ttl_move_on_insert = 1` (デフォルト) になっている場合、そのパーツは
   直接その宛先に書き込まれます。そこでの予約に失敗した場合、`INSERT` は
   ステップ 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` データベースへの `INSERT` は対象外です。
</Info>

<Note>
  `perform_ttl_move_on_insert` は、ソースボリュームではなく
  **TTL 宛先**ボリュームから読み取られます。
  `TO DISK 'X'` ルールでは、このフラグは
  ディスク `X` を含むボリュームから読み取られます。ポリシー内の他のボリュームで
  これを設定しても、`INSERT` パスには影響しません。
</Note>

「すでに期限切れ」の TTL move ルールが適用される場合でも、`INSERT` で
`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](/ja/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure)
を参照してください。
