ClickHouse · ClickHouse 26.3
В разборе MergeTree от RWB мутации описаны коротко: они не атомарны, выполняются по порядку создания, не блокируют друг друга и не трогают строки, вставленные после запуска. Перед тем как полагаться на UPDATE в ClickHouse, это стоит знать наизусть.
В таблице orders (MergeTree, сотни кусков) продавца 42 заблокировали за подделки. В 14:00 аналитик запускает ALTER TABLE orders UPDATE status = 'cancelled' WHERE seller_id = 42. В это время загрузчик продолжает вставлять новые заказы этого продавца пачками раз в 10 секунд, а мутация идёт 20 минут.
В работе: Массовые исправления в аналитических таблицах: отмены, анонимизация, правка справочного поля.
Источник: кейс Wildberries (RWB): основы MergeTree на практике, 2024. Условие пересказано своими словами.
Какие утверждения о мутации верны?
- Пока мутация идёт, SELECT может увидеть часть заказов продавца уже отменёнными, а часть — ещё нет
- Заказы, вставленные после 14:00, останутся со статусом new
- Если сервер перезапустится в 14:10, мутация продолжится после старта
- Вставки продавца 42 ждут, пока мутация закончится
- Если мутация упадёт на половине, уже изменённые куски откатятся