---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ydb.tech/docs/en/yql/reference/syntax/alter_table/changefeed.md
  - https://ydb.tech/docs/ru/yql/reference/syntax/alter_table/changefeed.md
sourcePath: ru/core/yql/reference/syntax/alter_table/changefeed.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Добавление или удаление потока изменений


<!-- source: ru/_includes/not_allow_for_olap_note.md -->
{% note warning %}

<!-- source: ru/_includes/not_allow_for_olap_text.md -->
Поддерживается только для [строковых](https://ydb.tech/docs/ru/concepts/datamodel/table.md#row-oriented-tables) таблиц. Поддержка функциональности для [колоночных](https://ydb.tech/docs/ru/concepts/datamodel/table.md#column-oriented-tables) таблиц находится в разработке.
<!-- endsource: ru/_includes/not_allow_for_olap_text.md -->

{% endnote %}
<!-- endsource: ru/_includes/not_allow_for_olap_note.md -->


`ADD CHANGEFEED <name> WITH (option = value[, ...])` — добавляет [поток изменений (changefeed)](https://ydb.tech/docs/ru/concepts/cdc.md) с указанным именем и параметрами.

## Параметры потока изменений {#changefeed-options}

* `MODE` — режим работы. Указывает, что именно будет записано в поток при каждом изменении данных в таблице:
    * `KEYS_ONLY` — будут записаны только компоненты первичного ключа и признак изменения.
    * `UPDATES` — будут записаны значения изменившихся столбцов, получившиеся в результате изменения.
    * `NEW_IMAGE` — будут записаны значения всех столбцов, получившиеся в результате изменения.
    * `OLD_IMAGE` — будут записаны значения всех столбцов, предшествующие изменению.
    * `NEW_AND_OLD_IMAGES` - комбинация режимов `NEW_IMAGE` и `OLD_IMAGE`. Будут записаны значения всех столбцов _до_ и _в результате_ изменения.
* `FORMAT` — формат данных, в котором будут записаны данные:
    * `JSON` — записывать данные в формате [JSON](https://ydb.tech/docs/ru/concepts/cdc.md#json-record-structure).


    * `DEBEZIUM_JSON` — записывать данные в [JSON-формате, аналогичном Debezium формату](https://ydb.tech/docs/ru/concepts/cdc.md#debezium-json-record-structure).
* `VIRTUAL_TIMESTAMPS` — включение-выключение [виртуальных меток времени](https://ydb.tech/docs/ru/concepts/cdc.md#virtual-timestamps).
* `BARRIERS_INTERVAL` — периодичность выгрузки [барьеров](https://ydb.tech/docs/ru/concepts/cdc.md#barriers). Тип значения — `Interval`. По умолчанию выключено.
* `RETENTION_PERIOD` — [время хранения записей](https://ydb.tech/docs/ru/concepts/cdc.md#retention-period). Тип значения — `Interval`, значение по умолчанию — 24 часа (`Interval('PT24H')`).
* `TOPIC_AUTO_PARTITIONING` — [режим автопартиционирования топика](https://ydb.tech/docs/ru/concepts/cdc.md#topic-partitions):
    * `ENABLED` — для потока изменений будет создан [автопартиционированный топик](https://ydb.tech/docs/ru/concepts/datamodel/topic.md#autopartitioning). Количество партиций в таком топике увеличивается автоматически по мере роста скорости обновления таблицы. Параметры автопартиционирования топика можно [настроить](https://ydb.tech/docs/ru/yql/reference/syntax/alter-topic.md#alter-topic).
    * `DISABLED` — для потока изменений будет создан топик без [автопартиционирования](https://ydb.tech/docs/ru/concepts/datamodel/topic.md#autopartitioning). Это значение по умолчанию.
* `TOPIC_MIN_ACTIVE_PARTITIONS` — [количество партиций топика](https://ydb.tech/docs/ru/concepts/cdc.md#topic-partitions). По умолчанию количество партиций топика равно количеству партиций таблицы. Для автопартиционированных топиков количество партиций увеличивается по мере роста скорости обновления таблицы. Если при создании ченджфида опция `TOPIC_AUTO_PARTITIONING` была отключена (`DISABLED`), то число партиций в топике, связанном с таким ченджфидом, впоследствии изменить нельзя.
* `INITIAL_SCAN` — включение-выключение [первоначального сканирования](https://ydb.tech/docs/ru/concepts/cdc.md#initial-scan) таблицы. По умолчанию выключено.


Приведенный ниже код добавит поток изменений с именем `updates_feed`, в который будут выгружаться значения изменившихся столбцов таблицы в формате JSON:

```yql
ALTER TABLE `series` ADD CHANGEFEED `updates_feed` WITH (
    FORMAT = 'JSON',
    MODE = 'UPDATES'
);
```

Записи в таком потоке изменений будут храниться в течение 24 часов (значение по умолчанию). Код из следующего примера создаст поток изменений с хранением записей в течение 12 часов:

```yql
ALTER TABLE `series` ADD CHANGEFEED `updates_feed` WITH (
    FORMAT = 'JSON',
    MODE = 'UPDATES',
    RETENTION_PERIOD = Interval('PT12H')
);
```

Пример создания потока изменений с включенными виртуальными метками времени:

```yql
ALTER TABLE `series` ADD CHANGEFEED `updates_feed` WITH (
    FORMAT = 'JSON',
    MODE = 'UPDATES',
    VIRTUAL_TIMESTAMPS = TRUE
);
```

Пример создания потока изменений с виртуальными метками времени и барьерами раз в 10 секунд:

```yql
ALTER TABLE `series` ADD CHANGEFEED `updates_feed` WITH (
    FORMAT = 'JSON',
    MODE = 'UPDATES',
    VIRTUAL_TIMESTAMPS = TRUE,
    BARRIERS_INTERVAL = Interval('PT10S')
);
```

Пример создания потока изменений с первоначальным сканированием:

```yql
ALTER TABLE `series` ADD CHANGEFEED `updates_feed` WITH (
    FORMAT = 'JSON',
    MODE = 'UPDATES',
    INITIAL_SCAN = TRUE
);
```

Пример создания потока изменений с автопартиционированием:

```yql
ALTER TABLE `series` ADD CHANGEFEED `updates_feed` WITH (
    FORMAT = 'JSON',
    MODE = 'UPDATES',
    TOPIC_AUTO_PARTITIONING = 'ENABLED',
    TOPIC_MIN_ACTIVE_PARTITIONS = 2
);
```

`DROP CHANGEFEED` — удаляет поток изменений с указанным именем. Приведенный ниже код удалит changefeed с именем `updates_feed`:

```yql
ALTER TABLE `series` DROP CHANGEFEED `updates_feed`;
```
