Основные системные таблицы
system.errors
system.replicas
system.replication_queue
system.merges
system.parts
Распространённые проблемы в продакшене
Проблемы с дисковым пространством
Ошибка «Too many частей»
- Группируйте данные в батчи с порогами 30 секунд или 200 МБ
- Включите async_insert для автоматического батчинга
- Используйте буферные таблицы для батчинга на стороне сервера
- Настройте Kafka для контролируемого размера батчей
Проблемы с некорректными временными метками
Риски операций ALTER
ALTER на таблицах объёмом в несколько терабайт могут потреблять значительные ресурсы и даже блокировать базы данных. В одном из примеров из сообщества изменение типа Integer на Float для 14 ТБ данных привело к блокировке всей базы данных и потребовало её восстановления из резервных копий.
Отслеживайте ресурсоёмкие мутации:
Память и производительность
Внешняя агрегация
max_bytes_before_external_group_by — этот параметр помогает предотвратить сбои из-за нехватки памяти при больших операциях GROUP BY. Подробнее об этой настройке читайте здесь.
Подробности об async insert
Настройка distributed таблицы
insert_distributed_sync, чтобы задействовать параллельную обработку и немедленную отправку данных в сегменты.
Следите за накоплением временных данных при использовании distributed таблиц.
Пороговые значения для мониторинга производительности
- Число частей на партицию: желательно менее 100
- Задержанные вставки: должно оставаться равным нулю
- Частота вставок: для оптимальной производительности — примерно не более 1 в секунду
Краткая справка
| Проблема | Обнаружение | Решение |
|---|---|---|
| Место на диске | Проверьте общий объём данных в system.parts | Следите за использованием, планируйте масштабирование |
| Слишком много частей | Подсчитайте количество частей для каждой таблицы | Объединяйте вставки в батчи, включите async_insert |
| Задержка репликации | Проверьте задержку в system.replicas | Следите за сетью, перезапускайте реплики |
| Некорректные данные | Проверяйте даты партиций | Добавьте проверку временных меток |
| Зависшие мутации | Проверьте статус в system.mutations | Сначала тестируйте на небольшом объёме данных |