Хранилище данныхOSS
Хотя ClickHouse ориентирован на аналитические рабочие нагрузки с большими объемами данных, в некоторых случаях существующие данные можно изменять или
удалять. Эти операции называются “мутациями” и выполняются с помощью команды ALTER TABLE.
Обновление данных
ALTER TABLE...UPDATE, чтобы обновить строки в таблице:
<expression> — это новое значение столбца для строк, удовлетворяющих условию <filter_expr>. <expression> должен иметь тот же тип данных, что и столбец, или приводиться к нему с помощью оператора CAST. <filter_expr> должен возвращать значение UInt8 (ноль или ненулевое) для каждой строки данных. Несколько операторов UPDATE <column> можно объединить в одной команде ALTER TABLE, разделив их запятыми.
Примеры:
-
Такая мутация позволяет обновить
visitor_id, заменив его новым значением с помощью поиска по словарю: -
Изменение нескольких значений в одной команде может быть эффективнее, чем выполнение нескольких команд:
-
Мутации можно выполнять с предложением
ON CLUSTERдля сегментированных таблиц:
Невозможно обновлять столбцы, которые входят в основной ключ или ключ сортировки.
Удаление данных
ALTER TABLE:
<filter_expr> должно возвращать значение UInt8 для каждой строки данных.
Примеры
-
Удалить все записи, в которых значение столбца содержится в массиве значений:
-
Что изменяет этот запрос?
Чтобы удалить все данные из таблицы, эффективнее использовать команду
TRUNCATE TABLE [<database].]<table>. Эту команду также можно выполнить с предложением ON CLUSTER.DELETE.
Легковесные удаления
DELETE FROM, которая называется легковесным удалением. Удалённые строки сразу помечаются как удалённые и автоматически исключаются из всех последующих запросов, поэтому не нужно ждать слияния частей или использовать ключевое слово FINAL. Очистка данных происходит асинхронно в фоновом режиме.
hits, в которых столбец Title содержит текст hello:
- Эта возможность доступна только для семейства движков таблиц
MergeTree. - По умолчанию легковесные удаления выполняются синхронно: операция ждёт, пока все реплики обработают удаление. Это поведение управляется настройкой
lightweight_deletes_sync.