TRUNCATE TSLOG
Содержание раздела
Поддерживается в версиях: 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 (исключая саму границу). Возможные значения:
YYYY-MM-DD hh:mm:ss[.SSSSSS]— метка времени;sys_cn— номер операции.
Варианты ответа
В ответе возвращается:
- пустой объект 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