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

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

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

TTL

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

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

примечание

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

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

DELETE FROM

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

примечание

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

ALTER DELETE

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

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

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

Более подробную информацию о мутациях можно найти в документации.

DROP PARTITION

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

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

TRUNCATE

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

Более подробную информацию о усечении таблицы можно найти в документации.