Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Создание планов запросов [ править ]

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

Графические планы [ править ]

Текстовые планы [ править ]

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

StmtText ----  | - Сортировка ( ORDER  BY : ([ с ] . [ LastName ]  ASC ))  | - Вложенные  циклы ( Inner  Присоединяйтесь ,  наружными  ЛИТЕРАТУРЫ : ([ е ] . [ ContactID ],  [ Expr1004 ])  С  НЕЗАКАЗАННЫЙ ПРЕДВАРИТЕЛЬНЫЙ  ВЫБОР )  | - Сканирование кластерного  индекса  ( ОБЪЕКТ : ([ AdventureWorks ] . [HumanResources ] . [ Сотрудник ] . [ PK_Employee_EmployeeID ]  AS  [ е ]))  | - кластерный  индекс  Seek ( OBJECT : ([ AdventureWorks ] . [ Лицо ] . [ Контакт ] . [ PK_Contact_ContactID ]  AS  [ с ]),  SEEK : ([ с ] . [ ContactID ] = [ AdventureWorks ]. [ HumanResources ] . [ Сотрудник ] . [ ContactID ]  как  [ e ] . [ ContactID ])  ЗАКАЗАНО  ВПЕРЕД )

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

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

Настройка базы данных [ править ]

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

Настройка запроса [ править ]

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

Некоторые базы данных, например 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 Trace» . 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 .