Анализ производительности запросов

Когда ваши запросы выполняются, Azure Databricks возвращает аналитику по производительности запросов, которая отмечает возможности для повышения производительности и сообщает о уже применённых оптимизациях. Каждая аналитика содержит рекомендации, по которым можно действовать, например, по компактизации небольших файлов, сбору статистики или изменению размера склада.

Поиск аналитических сведений и рекомендаций для запроса

Аналитика отображается в журнале запросов и в профиле запроса. На панели сведений о запросе отображается сводка аналитических сведений, ранжированных по их предполагаемому эффекту на общую длительность задачи. На вкладке "Аналитика производительности " в профиле запроса отображаются полные сведения для каждого аналитических сведений.

Оптимизация с помощью кода Genie

Если запрос содержит аналитические сведения, доступные для действий, выберите "Оптимизировать" , чтобы открыть Код Genie. Для аналитических сведений, требующих изменения запроса, Genie Code перезаписывает запрос и представляет изменения для утверждения. Для аналитических сведений, связанных с изменениями таблицы или вычислений, Genie Code суммирует рекомендуемые действия в виде текста обычного языка.

Дополнительные сведения о работе с Genie Code см. в разделе Genie Code.

Аналитика оптимизации запросов

COVERAGE_FILTER_KEYS_CLUSTERING

Таблица кластеризована одним или несколькими ключами, которые не используются в фильтрах во время сканирования таблицы.

Рекомендации: Добавьте фильтры в ключи кластеризации, чтобы сократить чтение байтов.

COVERAGE_FILTER_KEYS_PARTITIONING

Таблица секционируется одним или несколькими ключами, которые не используются в фильтрах во время сканирования таблицы.

Рекомендации: Добавьте фильтры на ключи секционирования, чтобы уменьшить количество операций чтения байтов.

COVERAGE_PHOTON

Фотон не может ускорить эту операцию, поэтому запрос использует стандартный механизм среды выполнения.

Рекомендации: Просмотрите ограничения Photon и настройте запрос, чтобы использовать поддерживаемый путь выполнения.

EXPLODING_JOIN

Соединение создает значительно больше строк, чем оно считывает.

Рекомендации: Определите нужное подмножество результатов, а затем обновите условие соединения или уменьшите количество входных строк из обоих отношений.

FLOW_FULL_RECOMPUTE

Поток выполняется как полный перекомпьютер.

Рекомендации: Переопределите запрос добавочной поддержки , чтобы уменьшить число операций чтения байтов.

REDUNDANT_AGGREGATION

Статистическая операция не изменила результат запроса.

Рекомендации: Удалите агрегат или примените ограничения первичного и внешнего ключа.

REDUNDANT_JOIN

Внешнее соединение не меняло количество строк на внешней стороне, и столбцы из объединённой таблицы не использовались.

Рекомендация: Удалите объединение или примените первичный ключ или уникальные ограничения.

SELECTIVE_JOIN

Соединение создает значительно меньше строк, чем оно считывает.

Рекомендации: Определите нужное подмножество результатов, а затем добавьте фильтры перед присоединением для уменьшения входных строк.

WIDE_PROJECTION

Запрос проектов всех столбцов из таблицы.

Рекомендация. Project только столбцы, необходимые для уменьшения количества операций чтения байтов.

Аналитика макета данных

Одновременная_Запись

Одновременные операции записи в таблицу вызывают конфликты , которые автоматически разрешаются или завершаются сбоем.

Рекомендации: Просмотрите журнал разностных данных, чтобы определить одновременные записи и настроить планирование, чтобы избежать конфликтов.

COVERAGE_STATS_DELTA

Статистика пропуска данных Delta отсутствует или неполна для фильтров файлов сканирования таблицы, и запрос использует фильтрацию по файлу.

Состояние статистики для каждого фильтра может быть одним из следующих:

  • Полный: Статистика доступна для всех фильтров.
  • Частичное: Статистика доступна для подмножества фильтров.
  • Недоступен: Статистика недоступна для любого фильтра.
  • Неиспользуемые: Не удается использовать статистику, так как фильтр преобразует тип данных.

Рекомендация.Сборстатистики разностной информации для уменьшения байтов чтения.

COVERAGE_STATS_OPTIMIZER

Статистика оптимизатора на основе затрат отсутствует или неполна, поэтому план запроса использует стандартные эвристики.

Рекомендация.Сборстатистики, чтобы оптимизатор мог создать лучший план.

DATA_FILE_SIZE

Сканирование таблицы считывает множество небольших файлов, что увеличивает время сканирования.

Recommendations:

DATA_SKEW

Данные распределяются неравномерно между вычислительными ресурсами.

Рекомендации: Просмотрите распределение данных, а затем используйте соль ключей или предварительную агрегирование для балансировки рабочей нагрузки.

MANUAL_DATA_LAYOUT

Таблица оптимизирована вручную и может использовать автоматическую кластеризацию жидкостей.

Recommendations:

  • Преобразуйте таблицу из внешней среды в управляемое для повышения производительности и автоматического обслуживания.
  • Включите прогнозную оптимизацию в таблице для автоматических операций обслуживания.
  • Включите автоматическое кластеризация в таблице, чтобы сократить чтение байтов.

Аналитика вычислительных ресурсов и вычислений

DATA_SPILL

Данные разлились на диск во время выполнения запроса, так как данные не помещались в память.

Рекомендации: Увеличьте размер хранилища для добавления памяти. Уменьшите количество строк, столбцов или размер больших столбцов (строк, массивов, карт, структур) для уменьшения использования памяти.

EXCESSIVE_QUEUE_TIME

Запрос ждал в очереди хранилища .

Рекомендации: Увеличьте максимальное количество кластеров в хранилище, чтобы сократить время очереди.

IO_THROTTLING

Запрос облачного хранилища регулируется поставщиком облачных служб.

Рекомендации: Обратитесь к администратору, чтобы запросить увеличенные ограничения на хранение от поставщика облачных служб.

Прикладные ускорения

Эти данные описывают оптимизации, которые Azure Databricks уже применял при выполнении запросов. Они отображаются во вкладке Performance Insights с меткой Accelerated и не требуют действий.

AUTO_LIQUID_CLUSTERING

Этот запрос читает меньше данных, поскольку его таблицы используют автоматическую кластеризацию жидкостей. Azure Databricks постоянно кластеризует каждую таблицу по ключам, которые она изучает из вашей нагрузки, поэтому сканирует пропуск файлов, которые не могут совпасть с фильтрами. Настройка или ручное разбиение не требуется.

HISTORY_BASED_JOIN_STRATEGY

Azure Databricks оптимизировал соединение этого запроса, используя измерения предыдущих похожих запросов. Он выбрал broadcast-join вместо перемещения данных по кластеру, основываясь на истории вашей рабочей нагрузки. Изменение запроса не требуется.

SHORT_QUERY_PRIORITIZATION

Несмотря на то, что кластер был полностью загружен, Azure Databricks предположил, что этот запрос будет коротковременным, и сразу же запустил его по быстрому пути, вместо того чтобы держать в очереди за более тяжёлыми запросами. Это позволяет интерактивным рабочим нагрузкам быть отзывчивыми под нагрузкой.

Дополнительные ресурсы

Более широкий обзор рекомендаций по повышению производительности см. в комплексном руководстве по оптимизации databricks, Spark и Delta Lake Workloads.