TRUNCATE TSLOG

Содержание раздела
  1. Поддерживаемые сущности
  2. Сохранение нумерации дельт
  3. Как работает запрос
  4. Пример работы запроса
  5. Синтаксис
    1. Ключевое слово FOR SYSTEM_TIME AS OF {'YYYY-MM-DD hh:mm:ss[.SSSSSS]' | CN sys_cn}
  6. Варианты ответа
  7. Ограничения
  8. Примеры
    1. Удаление записей из tslog-журнала c указанием метки времени
    2. Удаление записей из tslog-журнала c указанием номера

Поддерживается в версиях: 7.6.

Запрос удаляет записи из tslog-журнала сущности, освобождая дисковое пространство на сервере сервисной БД. Записи удаляются с первой записи до указанного момента времени, исключая правую границу.

Особенности удаления:

  • записи удаляются окончательно;
  • удаление не отражается в журнале DDL-операций;
  • удаляется метаинформация об операциях записи, но не данные самих операций (для удаления данных используйте TRUNCATE HISTORY).

Запрос может содержать индексированные и именованные параметры.

После успешного выполнения запроса чтение из сущности с указанием удаленных меток операций (SELECT ... FOR SYSTEM_TIME AS OF <timestamp>/FOR SYSTEM_TIME STARTED TS/FOR SYSTEM_TIME FINISHED TS) становится недоступным.

Старые записи tslog-журнала удаляются автоматически, если настроены retention-правила, направленные на удаление данных.

Поддерживаемые сущности

Удаление записей из tslog-журнала доступно для сущностей:

Сохранение нумерации дельт

Запрос не удаляет метаинформацию о дельтах: их нумерация остается прежней.

Как работает запрос

Запрос удаляет записи tslog-журнала с первой по последнюю, которая предшествует указанному моменту. Для партиционированной таблицы удаляются записи из tslog-журналов всех ее партиций.

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

Пример работы запроса

Пример работы запроса TRUNCATE TSLOG показан на рисунке ниже.

Для простоты tslog-журнал в примере содержит только три записи. Запрос TRUNCATE TSLOG с меткой времени '2025-11-18 22:00:00' удаляет первые две записи и оставляет третью, так как третья запись — последняя на указанный момент (исключается как правая граница периода удаления).

Удаление записей по метку времени 2025-11-18 22:00:00

Синтаксис

TRUNCATE TSLOG [db_name.]entity_name 
FOR SYSTEM_TIME AS OF {'YYYY-MM-DD hh:mm:ss[.SSSSSS]' | CN sys_cn}

Параметры:

db_name

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

entity_name

Имя сущности, чьи записи удаляются из tslog.

Возможные значения:

  • имя логической таблицы,
  • имя снапшот-таблицы,
  • имя материализованного представления.

Логическая таблица может быть любого вида.

Ключевое слово FOR SYSTEM_TIME AS OF {'YYYY-MM-DD hh:mm:ss[.SSSSSS]' | CN sys_cn}

Задает правую границу периода, за который удаляются записи из tslog (исключая саму границу). Возможные значения:

Варианты ответа

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

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

Ограничения

  • Записи удаляются без возможности отмены удаления или восстановления.
  • Удаление записей не фиксируется в журнале DDL-операций.
  • После удаления записей чтение с указанием удаленных меток операций становится недоступным.

Примеры

Удаление записей из tslog-журнала c указанием метки времени

Удаление записей до метки времени, имеющей секундную точность:

-- удаление записей для обычной логической таблицы
TRUNCATE TSLOG marketing.sales FOR SYSTEM_TIME AS OF '2014-12-23 15:15:14';

-- удаление записей для снапшот-таблицы
TRUNCATE TSLOG marketing.sales_snapshot FOR SYSTEM_TIME AS OF '2014-12-23 15:15:14';

Удаление записей для материализованного представления sales_by_stores до метки времени, имеющей максимальную точность:

TRUNCATE TSLOG matview_db.sales_by_stores FOR SYSTEM_TIME AS OF '2019-12-23 15:15:14.736193'

Удаление записей из tslog-журнала c указанием номера

Удаление записей для партиционированной таблицы sales_partitioned до операции 1763486918149986:

TRUNCATE TSLOG marketing.sales_partitioned FOR SYSTEM_TIME AS OF CN 1763486918149986