План запроса - Query plan

А план запроса (или план выполнения запроса) представляет собой последовательность шагов, используемых для данные доступа в SQL система управления реляционной базой данных. Это частный случай реляционная модель концепция планов доступа.

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

Создание планов запросов

Данная система управления базой данных может предлагать один или несколько механизмов для возврата плана для данного запроса. В некоторых пакетах есть инструменты, которые создают графическое представление плана запроса. Другие инструменты позволяют установить специальный режим для соединения, чтобы СУБД возвращала текстовое описание плана запроса. Другой механизм для получения плана запроса включает запрос таблицы виртуальной базы данных после выполнения запроса, который необходимо изучить. В Oracle, например, этого можно достичь с помощью оператора EXPLAIN PLAN.

Графические планы

В Студия управления Microsoft SQL Server инструмент, который поставляется с Microsoft SQL Server, например, показывает этот графический план при выполнении этого примера соединения двух таблиц для включенной базы данных образца:

ВЫБРАТЬ *ИЗ Человеческие ресурсы.Наемный рабочий В КАЧЕСТВЕ е    ВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ Человек.Связаться с нами В КАЧЕСТВЕ c    НА е.ContactID = c.ContactIDПОРЯДОК ОТ c.Фамилия

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

Microsoft SQL Server Management Studio отображает пример плана запроса.

Текстовые планы

Текстовый план, приведенный для того же запроса на скриншоте, показан здесь:

StmtText----  |--Сортировать(ПОРЯДОК ОТ:([c].[Фамилия] ASC))       |--Вложенный Петли(Внутренний Присоединиться, ВНЕШНИЙ ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА:([е].[ContactID], [Expr1004]) С НЕУПОРЯДОЧЕННЫЙ Предвыборка)            |--Кластеризованный Индекс Сканировать(ОБЪЕКТ:([AdventureWorks].[Человеческие ресурсы].[Наемный рабочий].[PK_Employee_EmployeeID] В КАЧЕСТВЕ [е]))            |--Кластеризованный Индекс Искать(ОБЪЕКТ:([AdventureWorks].[Человек].[Связаться с нами].[PK_Contact_ContactID] В КАЧЕСТВЕ [c]),               ИСКАТЬ:([c].[ContactID]=[AdventureWorks].[Человеческие ресурсы].[Наемный рабочий].[ContactID] в качестве [е].[ContactID]) УПОРЯДОЧЕННЫЙ ВПЕРЕД)

Это указывает на то, что механизм запросов выполнит сканирование индекса первичного ключа в таблице Employee и поиск совпадений по индексу первичного ключа (столбец ContactID) в таблице Contact для поиска совпадающих строк. Результирующие строки с каждой стороны будут показаны оператору соединения вложенных циклов, отсортированы, а затем возвращены в качестве набора результатов для соединения.

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

Настройка базы данных

Просмотр плана запроса может открыть возможности для новых индексы или изменения существующих индексов. Он также может показать, что база данных неправильно использует существующие индексы (см. оптимизатор запросов ).

Настройка запроса

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

Некоторые базы данных, например Oracle, предоставляют план таблицы для настройки запросов. Эта таблица плана вернет стоимость и время выполнения запроса. Oracle предлагает два подхода к оптимизации:

  1. CBO или оптимизация на основе затрат
  2. RBO или оптимизация на основе правил

RBO постепенно устаревает. Чтобы использовать CBO, необходимо проанализировать все таблицы, на которые ссылается запрос. Для анализа таблицы администратор баз данных может запустить код из пакета DBMS_STATS.

Другие инструменты для оптимизации запросов включают:

  1. Трассировка SQL[1]
  2. Oracle Trace и TKPROF [2]
  3. План выполнения Microsoft SMS (SQL)[3]
  4. Запись производительности Tableau (все БД)[4]

Рекомендации

  1. ^ «Трассировка SQL». Microsoft.com. Microsoft. Получено 30 марта 2020.
  2. ^ «Использование SQL Trace и TKPROF». Oracle.com. Получено 30 марта 2020.
  3. ^ «Планы выполнения». Microsoft.com. Microsoft. Получено 30 марта 2020.
  4. ^ «Оптимизировать производительность книги». Tableau.com. Tableau Inc. Получено 30 марта 2020.