Антипаттерн 10x в хранении
GROUP BY создает больше строк, чем убирает, значит, вы строите дорогой индекс, а не materialized view.
Проверка состояния materialized view в продакшене
- Низкая степень агрегации (<10%) = Хорошая MV, значительное сжатие
- Высокая степень агрегации (>70%) = Плохая MV, риск резкого роста объёма хранилища
- Множитель хранилища = Насколько больше или меньше будет ваша MV
Когда materialized views становятся проблемой
- Увеличивается задержка при вставке (запросы, которые раньше занимали 10 мс, теперь занимают 100+ мс)
- Ошибки “Too many parts” появляются чаще
- Пики загрузки CPU во время операций вставки
- Появляются тайм-ауты при вставке, которых раньше не было
system.query_log для отслеживания изменений в длительности запросов.
Источники видео
- ClickHouse at CommonRoom - Kirill Sapchuk - Видео с разбором кейса о «чрезмерном увлечении materialized view» и «взрыве 20GB→190GB»