Описание
Курс направлен на освоение эффективного написания и оптимизации SQL-запросов в ClickHouse. Участники изучат работу с метриками запросов, индексацию, джойны, агрегацию, подзапросы, CTE, кэширование и пользовательские функции. Особое внимание уделяется анализу производительности и оптимизации запросов для работы с большими объемами данных.
Для кого
- Разработчики, использующие ClickHouse в своих приложениях
- Аналитики, работающие с данными в ClickHouse
- Администраторы и специалисты сопровождения, которым необходимо оптимизировать запросы и решать проблемы производительности
После курса сотрудники смогут
- создавать запросы к Clickhouse;
- оценивать производительность запросов;
- использовать различные способы джойнов;
- наиболее эффективно фильтровать данные;
- понимать планы выполнения запросов и корректировать их.
План курса
- Введение в Clickhouse SQL. Основные отличия от Postgres SQL, Oracle SQL и SQL Server Transact-SQL.
- Клиенты для написания запросов Clickhouse: DBeaver и clickhouse-client. В каких ситуациях выбирать каждый из клиентов. Тонкие настройки клиентов.
- Получение метрик запросов для оптимизации. Встроенные метрики clickhouse-client и команда EXPLAIN. Дополнительные модификаторы INDEXES, HEADER, DESCRIPTION, ACTIONS, JSON в EXPLAIN PLAN.
- Таблицы system.query log и system.query_metrics для ретроспективного анализа запросов
- Оптимизация фильтрации. WHERE и PREWHERE. Первичные и вторичные индексы. Типы minmax, set и bloom для вторичных индексов. Применение проекций для ускорения фильтрации данных.
- Особенности фильтрации по текстовым данным в запросах Clickhouse. LIKE и регулярные выражения. Применение полнотекстовых индексов.
- Ограничение набора возвращаемых данных. LIMIT и FETCH.
- Сортировка в запросах Clickhouse. Сортировка в оперативной памяти и с использованием диска: max_bytes_before_external_sort. Индексы и проекции для ускорения сортировки.
- Синтаксис джойнов в запросах Clickhouse. Внутренние и внешние джойны. Джойны типа SEMI, ANTI, ANY, ASOF. Ситуации применения.
- Оптимизация джойнов в Clickhouse. Выбор алгоритма джойнов в запросе: hash join, parallel hash join, grace hash join, full sorting merge join, partial merge join. Direct join и применение словарей (dictionaries) как самый быстрый способ объединения таблиц.
- Группировка в запросах Clickhouse. Особенности применения агрегатных функций. Комбинаторы агрегатных функций: -If, -Array, -SimpleState, -State и т.п. ROLLUP и оконные функции.
- Декомпозиция в запросах Clickhouse. Особенности работы с подзапросами, Common Table Expressions и временными таблицами.
- Дополнительные возможности оптимизации запросов. Управление кэшированием и сжатием данных. Применение столбцовой статистики.
- Создание пользовательских функций в Clickhouse. Функции на основе лямбда-выражений и внешние функции.