Перейти к содержимому
Последнее обновление

Руководство по процессу оптимизации производительности

Оптимизация производительности в 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-запроса и определить ключевые возможности оптимизации.

Методы оптимизации для разных сценариев:

Подробные примеры см. в разделе Оптимизация плана.

Шаг 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.