Лабораторная работа №5
Планы выполнения запросов
Теоретический материал
Среда Среда SQL Server Management Studio является интерактивным графическим инструментом, который позволяет администратору или разработчику базы данных создавать запросы, выполнять несколько запросов одновременно, просматривать результаты, анализировать план запроса, а также предоставляет помощь, необходимую для улучшения производительности запросов. Параметры плана выполнения графически отображают способы получения данных, выбранные с помощью оптимизатора запросов SQL Server. Для графического отображения плана выполнения используются значки, представляющие выполнение определенных инструкций и запросов SQL Server вместо их табличного отображения, получаемого с помощью параметров SHOWPLAN_ALL или SHOWPLAN_TEXT инструкции SET языка Transact-SQL или с помощью XML-представления, получаемого при помощи инструкции SET SHOWPLAN_XML. Графическое отображение очень полезно для понимания показателей производительности запроса. Среда SQL Server Management Studio показывает, какой статистики не хватает, тем самым принуждая к оптимизации запросов за счет оценок качества выборки, а затем позволяет легко создать пропущенную статистику [3].
Использование параметров плана выполнения
Для того чтобы увидеть план выполнения запроса откройте или введите в редакторе запросов среды Management Studio сценарий на языке Transact-SQL, содержащий запросы, которые нужно проанализировать. После того как сценарий будет загружен в редактор запросов среды Management Studio, выберите, какой план выполнения показывать – расчетный или фактический, нажав кнопку Показать предполагаемый план выполнения (Display Estimated Execution Plan) или кнопку Включить действительный план выполнения (Include Actual Execution Plan) на панели инструментов редактора запросов. Панель инструментов редактора запросов показана на рисунке 5.1. Если нажать кнопку «Показать предполагаемый план выполнения», выполняется анализ сценария и формируется расчетный план выполнения. Если нажать кнопку «Включить действительный план выполнения», перед формированием плана выполнения необходимо выполнить сценарий. После того, как сценарий проанализирован и выполнен, выберите вкладку «План выполнения», чтобы просмотреть графическое представление результатов формирования плана.
Рисунок 5.1 - Панель инструментов редактора запросов.
Чтобы воспользоваться графическими возможностями плана выполнения в среде Management Studio и параметрами SHOWPLAN инструкции SET языка Transact-SQL, пользователи должны обладать достаточными разрешениями на выполнение инструкций и запросов языка Transact-SQL. Также пользователи должны обладать разрешением SHOWPLAN на все базы данных, в которых содержатся упомянутые в запросах объекты. Дополнительные сведения см. в разделе Безопасность инструкции Showplan [3].
Чтение результатов работы плана выполнения
Для просмотра плана выполнения перейдите на вкладку «План выполнения» (Execution Plan) в области результатов. Графическое представление результатов работы плана выполнения в среде SQL Server Management Studio читается справа налево и сверху вниз. Каждый проанализированный запрос в пакете отображается вместе с затратами на его выполнение в процентном отношении от общих затрат на выполнение пакета. На рисунке 5.2 показан план выполнения запроса:
SELECT B.BillID
, BI.BillItemID
, P.ProductID
, E.EmployeeID
, P.Name AS ProductName
, BI.Number
, P.Price
, BI.Cost
, B.[Date] AS DateBill
, BI.[Date] AS DateBillItem
, E.Name AS EmployeeName
, E.Post AS EmployeePost
, P.Photo AS ProductPhoto
FROM Bill AS B
INNER JOIN Employee AS E ON B.EmployeeID = E.EmployeeID
INNER JOIN BillItem AS BI ON B.BillID = BI.BillID
INNER JOIN Product AS P ON BI.ProductID = P.ProductID
Рисунок 5.2 - Действительный план выполнения запроса.
Следующие описания являются руководством по интерпретации результатов графического отображения плана выполнения в среде Management Studio:
Каждый узел древовидной структуры представлен в виде значка, указывающего логический и физический оператор, используемый для выполнения этой части запроса или инструкции.
Каждый узел связан со своим родительским узлом. Дочерние узлы одного родительского узла отображаются в одном столбце. Однако все узлы в одном столбце не обязательно имеют общий родительский узел. Правила со стрелками на конце соединяют каждый узел с его родителем.
Операторы показаны в виде символов, связанных с определенным родительским узлом.
Ширина стрелки пропорциональна количеству строк. Если имеются данные о фактическом количестве строк, используются эти данные. В противном случае используется ориентировочное количество строк.
Если запрос содержит несколько инструкций, показывается несколько планов выполнения запроса.
Части древовидных структур определены типом выполняемой инструкции.
Для параллельных запросов, которые задействуют несколько процессоров, пункт меню Свойства для каждого узла в графическом плане выполнения отображает сведения об используемых потоках операционной системы. Чтобы просмотреть свойства узла, щелкните узел правой кнопкой мыши и выберите Свойства [2].
