Перейти к основному содержимому
Перейти к основному содержимому

Можно ли удалить старые записи из таблицы ClickHouse?

Краткий ответ - «да». ClickHouse имеет несколько механизмов, которые позволяют освобождать дисковое пространство, удаляя старые данные. Каждый механизм предназначен для различных сценариев.

TTL

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

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

примечание

TTL также может использоваться для перемещения данных не только в /dev/null, но и между различными системами хранения, например, с SSD на HDD.

Более подробная информация о настройке TTL.

DELETE FROM

DELETE FROM позволяет выполнять стандартные запросы DELETE в ClickHouse. Строки, на которые указывает условие фильтрации, помечаются как удаленные и исключаются из будущих результатов. Очистка строк происходит асинхронно.

примечание

DELETE FROM в общем доступе начиная с версии 23.3 и новее. В более ранних версиях он является экспериментальным и должен быть активирован с помощью:

SET allow_experimental_lightweight_delete = true;

ALTER DELETE

ALTER DELETE удаляет строки с помощью асинхронных пакетных операций. В отличие от DELETE FROM, запросы, выполняемые после ALTER DELETE и до завершения пакетных операций, будут включать строки, предназначенные для удаления. Более подробную информацию см. в документации по ALTER DELETE.

ALTER DELETE можно использовать для гибкого удаления старых данных. Если вам нужно делать это регулярно, главный недостаток будет заключаться в необходимости иметь внешнюю систему для отправки запроса. Также существуют некоторые соображения по производительности, так как мутации переписывают полные части, даже если нужно удалить только одну строку.

Это самый распространенный подход для обеспечения соответствия вашей системы на основе ClickHouse требованиям GDPR.

Более подробная информация о мутациях.

DROP PARTITION

ALTER TABLE ... DROP PARTITION предоставляет экономичный способ удаления целой партиции. Он менее гибкий и требует корректной схемы партиционирования, настроенной при создании таблицы, но все же охватывает большинство обычных случаев. Как и мутации, он должен выполняться из внешней системы для регулярного использования.

Более подробная информация о манипуляциях с партициями.

TRUNCATE

Это довольно радикальный способ удалить все данные из таблицы, но в некоторых случаях это может быть именно то, что вам нужно.

Более подробная информация о усечении таблицы.