Сегодня я помержил в ClickHouse 30 пул-реквестов, а он всё ещё не тормозит: автотесты производительности Тестирование, нагрузочное тестирование
Не тормозить — основное продуктовое качество ClickHouse, которое возникает как результат целостной работы по многим направлениям: подходящих архитектурных решений, алгоритмической оптимизации, и небольшого количества связующей магии. За последний месяц в основную ветку ClickHouse добавилось 650 самостоятельных изменений — всевозможные улучшения, новая функциональность, исправления багов. Как при такой скорости разработки не потерять достигнутого? Ответ известен: автоматические тесты. Любое важное продуктовое качество необходимо тестировать, чтобы не потерять его в постоянном потоке изменений. Это верно и для производительности.
Я расскажу, как мы тестируем производительность каждого коммита в ClickHouse. К тестам есть три основных требования: тест должен измерять правильную величину, результат должен быть воспроизводим, и тест должен давать достаточно информации, чтобы его можно было интерпретировать и исправить или улучшить результат. Мы обсудим, как эти требования реализуются на практике: какие данные и запросы используем для тестирования, как строим эксперимент и обрабатываем результаты и как используем встроенные в ClickHouse инструменты интроспекции, такие как профайлер запросов.
Занимается разработкой ClickHouse, также работал над ядром PostgreSQL в Postgres Professional.