Главная » Microsoft SQL Server, Базы данных » Анализ запросов

0

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

Просмотр плана выполнения запроса

Еще одной моей любимой составной частью SQL Server является редактор запросов (Query Editor), отображающий план выполнения запроса. Вы можете просмотреть либо предварительный, либо точный план — обе эти функции доступны на панели инструментов, а также в меню Query.

И в оценочном, и в точном плане выполнения запроса содержатся одни и те же логические операции. Единственным отличием является то, что последний можно просмотреть только после выполнения запроса.

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

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

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

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

Планы можно сохранять в файлах с расширением . sqlplan для последующего исследования.

Puc. 50.3. План выполнения запроса отображает логические операции, которые SQL Server использует для выполнения запроса

Использование параметра showpian

В дополнение к графическому отображению плана выполнения параметр Showpian раскрывает его дополнительные детали. Он доступен в трех формах: all, text и XML.

Когда параметр showpian включен, SQL Server возвращает план выполнения запроса, но не выполняет инструкцию, как при использовании параметра show estimated plan. Единственной инструкцией в пакете должна быть Set showpian.

Подобно параметру show estimated plan, SQL Server вернет план выполнения запроса, но не выполнит инструкцию. В версии XML параметр show actual plan должен находиться в отключенном состоянии. К тому же, если установлено табличное отображение результатов запроса, таблица позволит открыть по ссылке файл XML, используя браузер. Работа параметра showplan описана ниже.

?               Showplan_all отображает операции в виде результирующего набора данных. Эта информация эквивалентна той, которая отображается в графическом представлении. Выполняемая инструкция возвращается в первой строке, а все операторы — в последующих.

?               Showplan_text очень похож на showplan_all, за исключением того, что выполняемая инструкция и операции находятся в разных результирующих наборах данных: при этом отображается только первый столбец stmt text.

?               Showplan_xml отображает больше деталей, чем остальные методы просмотра плана выполнения, и предлагает преимущества хранения и отображения неструктурированных данных, позволяя, таким образом, отображать дополнительную информацию, не относящуюся ко всем планам выполнения. Например, в элементе <Statement> отображается причина того, почему оптимизатор запросов вернул этот план выполнения.

Параметр showplan_text, наряду с параметрами set statistics, может быть включен и в графическом интерфейсе редактора запросов. С помощью команды Query Options контекстного меню можно открыть диалоговое окно параметров запроса, после чего найти параметры showplan, выбрав в меню пункт Execution ^Advanced.

I                 Динамическое представление управления также позволяет отобразить тот же

SVS план выполнения запроса в формате XML, однако этот метод потребует неко-

I                 * торого изучения необходимых параметров.

Еще одним способом получения плана выполнения запроса является использование команды set statistics profile on. При этом будет выполнен запрос и предоставлена та же детальная информация, что и при использовании параметра showplan_all, включая фактическое количество строк и статистику выполнения. Это является эквивалентом плана выполнения show actual в виде результирующего набора данных.

Интерпретация плана выполнения запроса

Чтение плана выполнения запроса на первый взгляд может показаться сложным: графика — непривычна, а объем информации — ошеломляет. SQL Server использует около шестидесяти операторов. Некоторые из них представляют конкретные физические задачи, в то время как большинство представляет собой набор скрытых задач. В табл. 50.2 перечислены ключевые операторы, относящиеся к запросам отбора и индексации.

Общим заблуждением является то, что поиск всегда хорош, в то время как сканирование всегда плохо. На самом деле это не всегда так. В связи с тем что СУБД SQL Server оптимизирована для последовательного извлечения данных, сканирование является отличным способом извлечения больших объемов данных, однако плохо подходит для извлечения нескольких изолированных строк. Поиск по индексу хорош для извлечения из разных мест по несколько строк, в то же время извлечение большей части таблицы с использованием того же метода показывает намного худшую производительность по сравнению со сканированием.

Таблица 50.2. Операторы плана выполнения запроса

Логическая операция поиска по закладкам в SQL Server 2005 была удалена и Новинка ^ заменена поиском в кластеризованном индексе и поиском в RID. В предыдущих 2005      версиях SQL Server отображался значок этой операции, но на самом деле вы

полнялись операции поиска в кластеризванном индексе и в RID.

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии