Руководство по процессу оптимизации производительности
Оптимизация производительности в Doris требует системной работы и методического подхода. Doris предоставляет инструменты диагностики и инструменты анализа для системной диагностики, позволяющие эффективно выявлять, анализировать и устранять проблемы производительности.
Что нужно проверить перед началом оптимизации:
- Вы подтвердили наличие медленных SQL-запросов или снижения производительности.
- У вас есть доступ к журналам узлов FE или к Doris Manager.
- Вы знакомы со схемой таблиц прикладной системы и типичными запросами к ним.
- Вы умеете пользоваться базовыми инструментами анализа, такими как
EXPLAINиProfile.
Полный процесс оптимизации состоит из четырёх этапов:

| Шаг | Этап | Основная цель | Основные инструменты |
|---|---|---|---|
| Шаг 1 | Выявление медленных запросов | Определить SQL-запросы, требующие оптимизации | Doris Manager, fe.audit.log, таблица audit_log |
| Шаг 2 | Оптимизация схемы | Устранить узкие места на уровне проектирования | Партиционирование и бакетирование, индексы, Colocate Group |
| Шаг 3 | Оптимизация плана | Оптимизировать план выполнения | EXPLAIN, материализованные представления, Hint |
| Шаг 4 | Оптимизация выполнения | Повысить производительность во время выполнения | Profile, Runtime Filter, параметры параллелизма |
Шаг 1: Выявление медленных запросов
Цель: Выделить в прикладной системе медленные SQL-запросы, требующие оптимизации.
Подход:
| Сценарий | Рекомендуемый подход | Описание |
|---|---|---|
| Doris Manager развёрнут | Используйте страницу журналов Manager | Визуальный интерфейс упрощает фильтрацию и сортировку |
| Doris Manager не развёрнут | Обратитесь к fe.audit.log на узлах FE или к системной таблице audit_log | Получив список медленных SQL-запросов, расставьте приоритеты и последовательно оптимизируйте запросы |
Подробнее об использовании инструментов см. в разделе Инструменты диагностики.
Шаг 2: Проектирование и оптимизация схемы
После выявления медленных SQL-запросов сначала проверьте схему таблиц прикладной системы, чтобы исключить проблемы производительности, вызванные ошибками проектирования. Оптимизация схемы охватывает три направления:
| Направление оптимизации | Основное содержание | Справочная документация |
|---|---|---|
| Оптимизация схемы на уровне таблицы | Количество партиций и бакетов, типы полей | Оптимизация схемы таблицы |
| Оптимизация индексов | Префиксный индекс, Bloom filter, инвертированный индекс и т. д. | Оптимизация индексов таблицы |
| Специальные методы оптимизации | Colocate Group и т. д. | Использование Colocate Group для оптимизации Join |
Подробные примеры см. в разделе Оптимизация плана.
Шаг 3: Оптимизация плана
Завершив проверку схемы, переходите к основному этапу оптимизации. На этом этапе используйте все возможности инструмента EXPLAIN на каждом уровне Doris, чтобы системно проанализировать план выполнения медленного SQL-запроса и определить ключевые возможности оптимизации.
Методы оптимизации для разных сценариев:
-
Запросы и аналитика по одной таблице
- Проанализируйте план выполнения и проверьте, работает ли отсечение партиций.
- Используйте материализованные представления на основе одной таблицы для ускорения запросов.
-
Сложная аналитика по нескольким таблицам
- Проанализируйте, насколько рационален Join Order, и выявите узкие места производительности.
- Используйте материализованные представления на основе нескольких таблиц для прозрачного переписывания запросов, чтобы ускорить запросы.
- Вручную зафиксируйте план выполнения с помощью Hint:
-
Специальные сценарии ускорения
Подробные примеры см. в разделе Оптимизация плана.
Шаг 4: Оптимизация выполнения
На этапе оптимизации выполнения необходимо оценить эффект оптимизации плана по фактическому поведению SQL-запроса во время выполнения и продолжить анализ узких мест выполнения, таких как распределение времени между этапами или недостаточный параллелизм.
Например, для аналитического запроса к нескольким таблицам с помощью Profile можно проверить следующее:
- Рационален ли порядок Join, выбранный планировщиком.
- Работает ли Runtime Filter.
- Соответствует ли степень параллелизма ожиданиям.
- Нагрузку на сервер (например, медленный IO или недостаточную производительность передачи данных по сети).
Для диагностики проблем, связанных с нагрузкой на сервер, необходимо использовать системные инструменты. Подробные примеры см. в разделе Оптимизация выполнения.
При анализе конкретной проблемы производительности рекомендуется сначала проверить план, а затем оптимизировать выполнение. Сначала используйте EXPLAIN для проверки плана выполнения, а затем Profile для выявления проблем производительности во время выполнения. Обратный порядок действий может привести к лишним затратам времени и затруднить быстрое выявление проблемы.
Часто задаваемые вопросы
Вопрос 1: Что следует оптимизировать сначала: схему или план?
Сначала следует оптимизировать схему. Нерациональная схема (например, неверно выбранные поля партиционирования или бакетирования либо отсутствие необходимых индексов) препятствует оптимизации самого плана выполнения. Предварительное устранение проблем схемы позволяет избежать повторных попыток оптимизации на неудачной основе.
Вопрос 2: В чём разница между EXPLAIN и Profile?
| Инструмент | Результат | Этап использования |
|---|---|---|
EXPLAIN | Статический план выполнения (запрос фактически не выполняется) | Оптимизация плана |
Profile | Метрики времени и использования ресурсов, полученные при фактическом выполнении | Оптимизация выполнения |
Вопрос 3: Что делать, если Join Order нерационален?
Изучите вывод EXPLAIN и используйте Leading Hint, чтобы вручную задать порядок Join.
Вопрос 4: Как решать проблемы медленного IO или медленной сети?
Profile может отражать нагрузку на сервер, но для выявления первопричины необходимо совместно использовать инструменты операционной системы (например, iostat, sar и netstat), чтобы исследовать узкие места оборудования или сети.
Итоги
Doris предоставляет разнообразные инструменты оптимизации, поддерживающие диагностику на всём пути: от выявления медленных запросов, проектирования схемы и анализа планов выполнения до оценки производительности во время выполнения. Пользователям прикладных систем и администраторам баз данных рекомендуется последовательно выполнять четыре этапа «выявление -> схема -> план -> выполнение», чтобы системно оптимизировать запросы и использовать весь потенциал производительности Doris.