ERASE DELTA

Содержание раздела
  1. Синтаксис
  2. Ограничения
    1. Ограничения выполнения
    2. Ограничения на другие операции
    3. Другие ограничения
  3. Примеры
    1. Удаление дельт с указанной дельты
    2. Удаление дельт с указанного момента времени

Запрос удаляет закрытые дельты логической базы данных, начиная с указанного момента времени (включительно). Данные, которые стали архивными в этих дельтах, снова становятся актуальными.

Удаленные дельты не могут быть восстановлены средствами системы.

Если нужно удалить данные одной таблицы или представления без удаления информации о дельтах, выполните запрос TRUNCATE ACTUAL.

Момент времени, с которого удаляются дельты, можно указать как номер дельты или дату и время. При обработке запроса с датой и временем система определяет последнюю закрытую на тот момент дельту и удаляет дельты, начиная с нее. Если указаны дата и время до нулевой дельты логической базы данных, в ответе возвращается исключение.

Рекомендуется указывать в запросе номер дельты, а не дату и время. В противном случае нужно учитывать, что каждый повтор запроса с датой и временем удаляет всё более ранние данные.
Например, если в логической БД marketing две дельты, закрытые в 12 часов (дельта 0) и 15 часов (дельта 1) 1 мая, то первый запрос ERASE DELTA marketing FOR SYSTEM_TIME AS OF '2022-05-01 20:00:00' удалит дельту 1, а второй такой же запрос удалит дельту 0 (так как она будет последней на этот момент после удаления дельты 1).

В ответе возвращается:

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

При успешном выполнении запроса удаляются все изменения, произошедшие с данными логических таблиц и материализованных представлений в логической БД с указанного момента времени по текущий. Из сервисной базы данных удаляется информация о дельтах, и их номера освобождаются. Логические сущности при этом не удаляются.

Если запрос ERASE DELTA не был успешно завершен, нужно устранить причины сбоя в его работе и повторить запрос. Пока очистка данных не завершилась успешно, открытие новых дельт недоступно.

На рисунке ниже показан пример результата выполнения запроса, удаляющего дельты, начиная с дельты 3. Удаляются все изменения, внесенные в дельтах 3 и 4, а данные дельты 2 вновь становятся актуальными. На рисунке для простоты рассмотрен вариант, когда в дельтах 2-4 были изменения только в одной логической таблице.

Удаление дельт с дельты 3

Записи журнала имеют привязку к номерам дельт, эта информация является справочной и не используется системой. При выполнении ERASE DELTA привязка записей к удаленным дельтам остается, что может приводить к нарушениям в хронологии записей.
Например, из-за удаления дельты 2 и 3 журнал может содержать информацию о том, что сущность удалена после второй (существующей) дельты, а создана — после третьей (удаленной) дельты.

Синтаксис

Удаление дельты с указанной дельты:

ERASE DELTA [db_name] FOR SYSTEM_TIME AS OF DELTA_NUM delta_num

Удаление дельт с указанного момента времени:

ERASE DELTA [db_name] FOR SYSTEM_TIME AS OF date_time_expression

Параметры:

db_name

Имя логической базы данных. Опционально, если выбрана логическая БД, используемая по умолчанию.

delta_num

Номер дельты, начиная с которой удаляются дельты.

date_time_expression

Момент времени в формате 'YYYY-MM-DD hh:mm:ss', начиная с которого удаляются дельты.

Ограничения

Ограничения выполнения

  • Запрос не может быть выполнен при наличии открытой дельты.
  • Запрос не может быть выполнен в логической базе данных, в которой есть несинхронизированные материализованные представления.
  • Запрос не может быть выполнен в сервисной базе данных INFORMATION_SCHEMA.

Ограничения на другие операции

Другие ограничения

  • Запрос не обновляет материализованные представления, которые связаны с очищаемыми таблицами и находятся в других логических базах данных. Такие представления продолжают хранить данные, удаленные из таблиц.
  • Удаление данных происходит вне механизма дельт и не может быть отменено.

Примеры

Удаление дельт с указанной дельты

Удаление всех изменений с дельты 3 по текущую дельту:

ERASE DELTA marketing FOR SYSTEM_TIME AS OF DELTA_NUM 3

Удаление дельт с указанного момента времени

Удаление всех изменений с момента 2022-04-10 00:00:00 по текущий момент:

ERASE DELTA marketing FOR SYSTEM_TIME AS OF '2022-04-10 00:00:00'