Jump to content

План запроса

(Перенаправлено из Плана выполнения )

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

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

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

[ редактировать ]

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

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

[ редактировать ]
Microsoft SQL Server Management Studio отображает пример плана запроса.

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

SELECT *
FROM HumanResources.Employee AS e
    INNER JOIN Person.Contact AS c
    ON e.ContactID = c.ContactID
ORDER BY c.LastName

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

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

[ редактировать ]

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

StmtText
----
  |--Sort(ORDER BY:([c].[LastName] ASC))
       |--Nested Loops(Inner Join, OUTER REFERENCES:([e].[ContactID], [Expr1004]) WITH UNORDERED PREFETCH)
            |--Clustered Index Scan(OBJECT:([AdventureWorks].[HumanResources].[Employee].[PK_Employee_EmployeeID] AS [e]))
            |--Clustered Index Seek(OBJECT:([AdventureWorks].[Person].[Contact].[PK_Contact_ContactID] AS [c]),
               SEEK:([c].[ContactID]=[AdventureWorks].[HumanResources].[Employee].[ContactID] as [e].[ContactID]) ORDERED FORWARD)

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

Некоторые базы данных, например 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 . Майкрософт . Проверено 30 марта 2020 г.
  2. ^ «Использование SQL Trace и TKPROF» . Oracle.com . Проверено 30 марта 2020 г.
  3. ^ «Планы выполнения» . Microsoft.com . Майкрософт . Проверено 30 марта 2020 г.
  4. ^ «Оптимизация производительности книги» . Табло.com . Табло Инк . Проверено 30 марта 2020 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 33099d8f19fdb3ad1407645ffdff193d__1705230420
URL1:https://arc.ask3.ru/arc/aa/33/3d/33099d8f19fdb3ad1407645ffdff193d.html
Заголовок, (Title) документа по адресу, URL1:
Query plan - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)