[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for ClickHouse®](../index.md) > [Пошаговые инструкции](index.md) > Хранение и обработка данных > Работа с гибридным хранилищем

# Работа с гибридным хранилищем

[Гибридное хранилище](../concepts/storage.md#hybrid-storage-features) позволяет хранить часто используемые данные в кластерном хранилище (на сетевых дисках кластера Managed Service for ClickHouse®), а редко используемые данные — в [Yandex Object Storage](../../storage/index.md).


## Включить для кластера гибридное хранилище {#enable-hybrid-storage}

{% note warning %}

Включенное гибридное хранилище нельзя отключить.

{% endnote %}


### Включить гибридное хранилище при создании кластера {#cluster-create}

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, в котором нужно создать кластер ClickHouse®.
    1. [Перейдите](https://kz.console.yandex.cloud/link/managed-clickhouse) в сервис **Managed Service for&nbsp;ClickHouse**.
    1. Нажмите кнопку **Создать кластер** и задайте параметры кластера. Подробнее о параметрах читайте в [инструкции по созданию кластера](cluster-create.md).
    1. В блоке **Настройки СУБД** включите опцию **Гибридное хранилище** и (опционально) задайте настройки гибридного хранилища:

        * **Кеширование данных** — разрешает временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее.
        
            По умолчанию кеширование данных включено.
        
        * **Объём кеша** — определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
        
        * **Мин. доля свободного места на дисках кластера** — устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
        
            Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.

    1. Нажмите кнопку **Создать кластер**.

- CLI {#cli}

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

    По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`.
    
    Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы создать кластер с включенным гибридным хранилищем и (опционально) задать его настройки:

    1. Посмотрите описание команды CLI для создания кластера:

        ```bash
        yc managed-clickhouse cluster create --help
        ```

    1. Выполните команду с указанием настроек гибридного хранилища:

        ```bash
        yc managed-clickhouse cluster create \
           ...
           --cloud-storage=true \
           --cloud-storage-data-cache=<кешировать_данные> \
           --cloud-storage-data-cache-max-size=<максимальный_объем_памяти_в_байтах> \
           --cloud-storage-move-factor=<доля_свободного_места> \
           --cloud-storage-prefer-not-to-merge=<отключить_слияние_кусков_данных>
          ...
        ```

        Где:

        * `--cloud-storage` — включает гибридное хранилище.

        * `--cloud-storage-data-cache` — разрешает временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
        
        * `--cloud-storage-data-cache-max-size` — определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
        
        * `--cloud-storage-move-factor` — устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
        
            Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
        
        * `--cloud-storage-prefer-not-to-merge` — отключает [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах. Чтобы отключить слияние, укажите значение `true` или передайте параметр без значения. Чтобы оставить слияние включенным, укажите значение `false` или не передавайте параметр в команде CLI при создании кластера.
        
            После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

        Подробнее о других параметрах команды `yc managed-clickhouse cluster create` читайте в [инструкции по созданию кластера](cluster-create.md).

- Terraform {#tf}

    1. Создайте конфигурационный файл Terraform с [планом инфраструктуры](cluster-create.md).
    1. Добавьте в конфигурационный файл блок `cloud_storage`:

        ```hcl
        resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
          ...
          cloud_storage = {
            enabled             = true
            move_factor         = <доля_свободного_места>
            data_cache_enabled  = <кешировать_данные>
            data_cache_max_size = <максимальный_объем_памяти_в_байтах>
            prefer_not_to_merge = <отключить_слияние_кусков_данных>
          }
        }
        ```

        Где:

        * `enabled` — включает гибридное хранилище.

        * `move_factor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
        
            Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
        
        * `data_cache_enabled` — разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища: `true` или `false`. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
        
        * `data_cache_max_size` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
        
        * `prefer_not_to_merge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.
        
            После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

    1. Проверьте корректность файла конфигурации Terraform:

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Создайте кластер:

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
        
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

    {% note warning "Ограничения по времени" %}
    
    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
    
    * создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
    * изменение — 90 минут;
    * удаление — 30 минут.
    
    Операции, длящиеся дольше указанного времени, прерываются.
    
    {% cut "Как изменить эти ограничения?" %}
    
    Добавьте к описанию кластера блок `timeouts`, например:
    
    ```hcl
    resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
      ...
      timeouts = {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    ```
    
    {% endcut %}
    
    {% endnote %}

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Воспользуйтесь методом [Cluster.Create](../api-ref/Cluster/create.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое:

            ```json
            {
              <Параметры_кластера>
              ...
              "configSpec": {
                "cloudStorage": {
                  "enabled": true,
                  "moveFactor": "<доля_свободного_места>",
                  "dataCacheEnabled": <кешировать_данные>,
                  "dataCacheMaxSize": "<максимальный_объем_памяти_в_байтах>",
                  "preferNotToMerge": <отключить_слияние_кусков_данных>
                },
                ...
              }
            }
            ```

            Где:

            * `enabled` — включает гибридное хранилище.

            * `moveFactor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
            
                Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
            
            * `dataCacheEnabled` — разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища: `true` или `false`. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
            
            * `dataCacheMaxSize` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
            
            * `preferNotToMerge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.
            
                После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

            Подробнее о других параметрах читайте в [инструкции по созданию кластера](cluster-create.md).

        1. Выполните запрос:

            ```bash
            curl \
              --request POST \
              --header "Authorization: Bearer $IAM_TOKEN" \
              --header "Content-Type: application/json" \
              --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters' \
              --data '@body.json'
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/create.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Воспользуйтесь вызовом [ClusterService.Create](../api-ref/grpc/Cluster/create.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        1. Создайте файл `body.json` и добавьте в него следующее содержимое:

            ```json
            {
              <Параметры_кластера>
              ...
              "config_spec": {
                "cloud_storage": {
                  "enabled": true,
                  "move_factor": "<доля_свободного_места>",
                  "data_cache_enabled": <кешировать_данные>,
                  "data_cache_max_size": "<максимальный_объем_памяти_в_байтах>",
                  "prefer_not_to_merge": <отключить_слияние_кусков_данных>
                },
                ...
              }
            }
            ```

            Где:

            * `enabled` — включает гибридное хранилище.

            * `move_factor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
            
                Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
            
            * `data_cache_enabled` — разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища: `true` или `false`. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
            
            * `data_cache_max_size` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
            
            * `prefer_not_to_merge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.
            
                После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

            Подробнее о других параметрах читайте в [инструкции по созданию кластера](cluster-create.md).

        1. Выполните запрос:

            ```bash
            grpcurl \
              -format json \
              -import-path ~/cloudapi/ \
              -import-path ~/cloudapi/third_party/googleapis/ \
              -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \
              -rpc-header "Authorization: Bearer $IAM_TOKEN" \
              -d @ \
              mdb.api.yandexcloud.kz:443 \
              yandex.cloud.mdb.clickhouse.v1.ClusterService.Create \
              < body.json
            ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}


### Включить гибридное хранилище в существующем кластере {#cluster-update}

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, в котором находится кластер.
    1. [Перейдите](https://kz.console.yandex.cloud/link/managed-clickhouse) в сервис **Managed Service for&nbsp;ClickHouse**.
    1. Выберите кластер и нажмите кнопку **Редактировать** на панели сверху.
    1. В блоке **Настройки СУБД** включите опцию **Гибридное хранилище** и (опционально) задайте настройки гибридного хранилища:

        * **Кеширование данных** — разрешает временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее.
        
            По умолчанию кеширование данных включено.
        
        * **Объём кеша** — определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
        
        * **Мин. доля свободного места на дисках кластера** — устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
        
            Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.

    1. Нажмите кнопку **Сохранить изменения**.

- CLI {#cli}

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

    По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`.
    
    Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы включить в кластере гибридное хранилище и (опционально) задать его настройки, выполните команду:

    ```bash
    yc managed-clickhouse cluster update <имя_или_идентификатор_кластера> \
       --cloud-storage=true \
       --cloud-storage-data-cache=<кешировать_данные> \
       --cloud-storage-data-cache-max-size=<максимальный_объем_памяти_в_байтах> \
       --cloud-storage-move-factor=<доля_свободного_места> \
       --cloud-storage-prefer-not-to-merge=<отключить_слияние_кусков_данных>
    ```

    Где:

    * `<имя_или_идентификатор_кластера>` — имя или идентификатор кластера, которые можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.
    * `--cloud-storage` — включает гибридное хранилище.

    * `--cloud-storage-data-cache` — разрешает временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
    
    * `--cloud-storage-data-cache-max-size` — определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
    
    * `--cloud-storage-move-factor` — устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
    
        Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
    
    * `--cloud-storage-prefer-not-to-merge` — отключает [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах. Чтобы отключить слияние, укажите значение `true` или передайте параметр без значения. Чтобы оставить слияние включенным, укажите значение `false` или не передавайте параметр в команде CLI при создании кластера.
    
        После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

- Terraform {#tf}

    Чтобы включить в кластере гибридное хранилище и (опционально) задать его настройки:

    1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

        Инструкция по созданию такого файла приведена в разделе [Создание кластера](cluster-create.md).

        Полный список доступных для изменения полей конфигурации кластера Managed Service for ClickHouse® приведен в [документации провайдера Terraform](../../terraform/resources/mdb_clickhouse_cluster.md).

    1. Добавьте в описание кластера Managed Service for ClickHouse® блок `cloud_storage`:

        ```hcl
        resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
          ...
          cloud_storage = {
            enabled             = true
            move_factor         = <доля_свободного_места>
            data_cache_enabled  = <кешировать_данные>
            data_cache_max_size = <максимальный_объем_памяти_в_байтах>
            prefer_not_to_merge = <отключить_слияние_кусков_данных>
          }
        }
        ```

        Где:

        * `enabled` — включает гибридное хранилище.

        * `move_factor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
        
            Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
        
        * `data_cache_enabled` — разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища: `true` или `false`. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
        
        * `data_cache_max_size` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
        
        * `prefer_not_to_merge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.
        
            После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

    1. Проверьте корректность файла конфигурации Terraform:

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов:

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
        
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

    {% note warning "Ограничения по времени" %}
    
    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
    
    * создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
    * изменение — 90 минут;
    * удаление — 30 минут.
    
    Операции, длящиеся дольше указанного времени, прерываются.
    
    {% cut "Как изменить эти ограничения?" %}
    
    Добавьте к описанию кластера блок `timeouts`, например:
    
    ```hcl
    resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
      ...
      timeouts = {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    ```
    
    {% endcut %}
    
    {% endnote %}

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        {% note warning %}
        
        Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask` (одной строкой через запятую).
        
        {% endnote %}

        ```bash
        curl \
            --request PATCH \
            --header "Authorization: Bearer $IAM_TOKEN" \
            --header "Content-Type: application/json" \
            --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \
            --data '{
                      "updateMask": "<перечень_изменяемых_настроек>",
                      "configSpec": {
                        "cloudStorage": {
                          "enabled": true,
                          "moveFactor": "<доля_свободного_места>",
                          "dataCacheEnabled": <кешировать_данные>,
                          "dataCacheMaxSize": "<максимальный_объем_памяти_в_байтах>",
                          "preferNotToMerge": <отключить_слияние_кусков_данных>
                        }
                      }
                    }'
        ```

        Где:

        * `<идентификатор_кластера>` — идентификатор кластера, который можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.
        * `updateMask` — перечень изменяемых параметров в одну строку через запятую.
        * `configSpec.cloudStorage` — настройки гибридного хранилища:

            * `enabled` — включает гибридное хранилище.

            * `moveFactor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
            
                Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
            
            * `dataCacheEnabled` — разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища: `true` или `false`. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
            
            * `dataCacheMaxSize` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
            
            * `preferNotToMerge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.
            
                После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        {% note warning %}
        
        Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask` (в виде массива строк `paths[]`).
        
        {% cut "Формат перечисления настроек" %}
        
        ```yaml
        "update_mask": {
            "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
            ]
        }
        ```
        
        {% endcut %}
        
        {% endnote %}

        ```bash
        grpcurl \
            -format json \
            -import-path ~/cloudapi/ \
            -import-path ~/cloudapi/third_party/googleapis/ \
            -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \
            -rpc-header "Authorization: Bearer $IAM_TOKEN" \
            -d '{
                  "cluster_id": "<идентификатор_кластера>",
                  "update_mask": {
                    "paths": [
                      <перечень_изменяемых_настроек>
                    ]
                  },
                  "config_spec": {
                    "cloud_storage": {
                      "enabled": true,
                      "move_factor": "<доля_свободного_места>",
                      "data_cache_enabled": <кешировать_данные>,
                      "data_cache_max_size": "<максимальный_объем_памяти_в_байтах>",
                      "prefer_not_to_merge": <отключить_слияние_кусков_данных>
                    }
                  }
                }' \
            mdb.api.yandexcloud.kz:443 \
            yandex.cloud.mdb.clickhouse.v1.ClusterService.Update
        ```

        Где:

        * `<идентификатор_кластера>` — идентификатор кластера, который можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.
        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.
        * `config_spec.cloud_storage` — настройки гибридного хранилища:

            * `enabled` — включает гибридное хранилище.

            * `move_factor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
            
                Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
            
            * `data_cache_enabled` — разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища: `true` или `false`. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
            
            * `data_cache_max_size` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
            
            * `prefer_not_to_merge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.
            
                После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

        Идентификатор кластера можно запросить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation).

{% endlist %}


## Изменить настройки гибридного хранилища {#change-hybrid-storage}

Если в кластере Managed Service for ClickHouse® включено гибридное хранилище, можно изменить его настройки.

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, в котором находится кластер.
    1. [Перейдите](https://kz.console.yandex.cloud/link/managed-clickhouse) в сервис **Managed Service for&nbsp;ClickHouse**.
    1. Выберите кластер и нажмите кнопку **Редактировать** на панели сверху.
    1. В блоке **Настройки СУБД** измените настройки гибридного хранилища:

        * **Кеширование данных** — разрешает временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее.
        
            По умолчанию кеширование данных включено.
        
        * **Объём кеша** — определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
        
        * **Мин. доля свободного места на дисках кластера** — устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
        
            Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.

    1. Нажмите кнопку **Сохранить изменения**.

- CLI {#cli}

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

    По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`.
    
    Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы изменить настройки гибридного хранилища, выполните команду:

    ```bash
    yc managed-clickhouse cluster update <имя_или_идентификатор_кластера> \
        --cloud-storage-data-cache=<кешировать_данные> \
        --cloud-storage-data-cache-max-size=<максимальный_объем_памяти_в_байтах> \
        --cloud-storage-move-factor=<доля_свободного_места> \
        --cloud-storage-prefer-not-to-merge=<отключить_слияние_кусков_данных>
    ```

    Где:

    * `<имя_или_идентификатор_кластера>` — имя или идентификатор кластера, которые можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    * `--cloud-storage-data-cache` — разрешает временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
    
    * `--cloud-storage-data-cache-max-size` — определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
    
    * `--cloud-storage-move-factor` — устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
    
        Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
    
    * `--cloud-storage-prefer-not-to-merge` — отключает [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах. Чтобы отключить слияние, укажите значение `true` или передайте параметр без значения. Чтобы оставить слияние включенным, укажите значение `false` или не передавайте параметр в команде CLI при создании кластера.
    
        После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

- Terraform {#tf}

    1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

        Инструкция по созданию такого файла приведена в разделе [Создание кластера](cluster-create.md).

        Полный список доступных для изменения полей конфигурации кластера Managed Service for ClickHouse® приведен в [документации провайдера Terraform](../../terraform/resources/mdb_clickhouse_cluster.md).

    1. Измените в описании кластера Managed Service for ClickHouse® атрибуты блока `cloud_storage`:

        ```hcl
        resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
          ...
          cloud_storage = {
            ...
            move_factor         = <доля_свободного_места>
            data_cache_enabled  = <кешировать_данные>
            data_cache_max_size = <максимальный_объем_памяти_в_байтах>
            prefer_not_to_merge = <отключить_слияние_кусков_данных>
          }
        }
        ```

        Где:

        * `move_factor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
        
            Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
        
        * `data_cache_enabled` — разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища: `true` или `false`. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
        
        * `data_cache_max_size` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
        
        * `prefer_not_to_merge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.
        
            После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

    1. Проверьте корректность файла конфигурации Terraform:

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов:

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
        
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

    {% note warning "Ограничения по времени" %}
    
    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
    
    * создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
    * изменение — 90 минут;
    * удаление — 30 минут.
    
    Операции, длящиеся дольше указанного времени, прерываются.
    
    {% cut "Как изменить эти ограничения?" %}
    
    Добавьте к описанию кластера блок `timeouts`, например:
    
    ```hcl
    resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
      ...
      timeouts = {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    ```
    
    {% endcut %}
    
    {% endnote %}

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        {% note warning %}
        
        Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask` (одной строкой через запятую).
        
        {% endnote %}

        ```bash
        curl \
            --request PATCH \
            --header "Authorization: Bearer $IAM_TOKEN" \
            --header "Content-Type: application/json" \
            --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>' \
            --data '{
                      "updateMask": "<перечень_изменяемых_настроек>",
                      "configSpec": {
                        "cloudStorage": {
                          "moveFactor": "<доля_свободного_места>",
                          "dataCacheEnabled": <кешировать_данные>,
                          "dataCacheMaxSize": "<максимальный_объем_памяти_в_байтах>",
                          "preferNotToMerge": <отключить_слияние_кусков_данных>
                        }
                      }
                    }'
        ```

        Где:

        * `<идентификатор_кластера>` — идентификатор кластера, который можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.
        * `updateMask` — перечень изменяемых параметров в одну строку через запятую.
        * `configSpec.cloudStorage` — настройки гибридного хранилища:

            * `moveFactor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
            
                Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
            
            * `dataCacheEnabled` — разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища: `true` или `false`. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
            
            * `dataCacheMaxSize` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
            
            * `preferNotToMerge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.
            
                После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        {% note warning %}
        
        Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask` (в виде массива строк `paths[]`).
        
        {% cut "Формат перечисления настроек" %}
        
        ```yaml
        "update_mask": {
            "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
            ]
        }
        ```
        
        {% endcut %}
        
        {% endnote %}

        ```bash
        grpcurl \
            -format json \
            -import-path ~/cloudapi/ \
            -import-path ~/cloudapi/third_party/googleapis/ \
            -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \
            -rpc-header "Authorization: Bearer $IAM_TOKEN" \
            -d '{
                  "cluster_id": "<идентификатор_кластера>",
                  "update_mask": {
                    "paths": [
                      <перечень_изменяемых_настроек>
                    ]
                  },
                  "config_spec": {
                    "cloud_storage": {
                      "move_factor": "<доля_свободного_места>",
                      "data_cache_enabled": <кешировать_данные>,
                      "data_cache_max_size": "<максимальный_объем_памяти_в_байтах>",
                      "prefer_not_to_merge": <отключить_слияние_кусков_данных>
                    }
                  }
                }' \
            mdb.api.yandexcloud.kz:443 \
            yandex.cloud.mdb.clickhouse.v1.ClusterService.Update
        ```

        Где:

        * `<идентификатор_кластера>` — идентификатор кластера, который можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.
        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.
        * `config_spec.cloud_storage` — настройки гибридного хранилища:

            * `move_factor` — минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в объектное хранилище. Минимальное значение — `0`, максимальное — `1`, по умолчанию — `0.01`.
            
                Куски данных для переноса выстраиваются в очередь от большего к меньшему, затем переносится такое количество кусков, при котором будет выполняться условие для указанной минимальной доли свободного места в кластерном хранилище.
            
            * `data_cache_enabled` — разрешить временное хранение в кластерном хранилище данных, запрошенных из объектного хранилища: `true` или `false`. В результате запрашиваемые из объектного хранилища холодные данные попадают на быстрые диски, где их обработка будет быстрее. Значение по умолчанию — `true` (разрешено).
            
            * `data_cache_max_size` — максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения данных, запрошенных из объектного хранилища. Если значение параметра не задано, максимальный объем памяти по умолчанию равен половине объема кластерного хранилища.
            
            * `prefer_not_to_merge` — отключить [слияние кусков данных](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key) в кластерном и объектном хранилищах: `true` или `false`. Чтобы отключить слияние, укажите значение `true`. Чтобы оставить слияние включенным, укажите значение `false`.
            
                После вставки данных в таблицу они сохраняются в виде куска данных и сортируются по первичному ключу. Затем в фоновом режиме куски одной партиции сливаются в более крупный кусок через 10–15 минут после вставки. Вы можете использовать системную таблицу [system.parts](https://clickhouse.com/docs/ru/operations/system-tables/parts#system_tables-parts), чтобы посмотреть слитые куски данных и партиции.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation).

{% endlist %}

## Задать политики хранения данных {#policies-create}

В кластере Managed Service for ClickHouse® с включенным гибридным хранилищем доступны три [политики хранения](../concepts/storage.md#storage-policies): `default` (по умолчанию), `local` и `object_storage`. Для таблиц БД можно указать одну из них. Создавать новые политики хранения или изменять уже существующие нельзя.

### Получить информацию о политиках {#get-info}

Чтобы посмотреть настройки политик, выполните запрос:

{% list tabs group=instructions %}

- SQL {#sql}

    ```sql
    SELECT *
    FROM system.storage_policies;
    ```

{% endlist %}


### Задать политику при создании таблицы {#table-create}

Чтобы задать политику при создании таблицы, выполните запрос:

{% list tabs group=instructions %}

- SQL {#sql}

    ```sql
    CREATE TABLE <имя_таблицы> (
        <схема_таблицы>
    ) ENGINE = MergeTree
    ...
    SETTINGS storage_policy = '<политика_хранения>';
    ```

{% endlist %}

### Задать политику для существующей таблицы {#table-update}

Чтобы задать или изменить политику для существующей таблицы, выполните запрос:

{% list tabs group=instructions %}

- SQL {#sql}

    ```sql
    ALTER TABLE <имя_таблицы>
    MODIFY SETTING storage_policy = '<политика_хранения>';
    ```

{% endlist %}


## Отслеживать объем, занимаемый данными в Object Storage {#metrics}

Чтобы узнать, какой объем занимают куски таблиц [MergeTree](https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/mergetree) в Object Storage, воспользуйтесь метрикой `ch_s3_disk_parts_size` в сервисе Yandex Monitoring:

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. Откройте [консоль управления](https://kz.console.yandex.cloud).
    1. [Перейдите](https://kz.console.yandex.cloud/link/monitoring) в сервис **Monitoring**.
    1. Откройте раздел **Обзор метрик**.
    1. Выполните запрос:

        ```text
        "ch_s3_disk_parts_size"{service="managed-clickhouse", resource_type="cluster", node="by_host", resource_id="<идентификатор_кластера>", subcluster_name="clickhouse_subcluster"}
        ```

{% endlist %}


## Примеры использования {#examples}

* [Использование гибридного хранилища в Managed Service for ClickHouse®](../tutorials/hybrid-storage.md)