|
Программирование >> Программирование баз данных
поиск причин нарушений в работе, непосредственно указывая на то, в каком запросе и в какой части конкретного запроса возникают проблемы производительности. Ниже приведены инструментальные средства, применение которых позволяет успешно решать проблемы производительности. Операторы SHOWPLAN TEXT ALL и графический план выполнения. Операторы STATISTICS 10. Средства проверки согласованности базы данных (Database Consistency Checker-DBCC). Приложение Query Governor. Средства анализа таблицы sys . processes. Приложение SQL Server Profiler. Многие специалисты по базам данных ограничиваются использованием только какого-либо одного из вышеназванных инструментов, но в действительности перечисленные инструментальные средства либо вообще не дублируют друг друга, либо обладают совпадающими возможностями лишь в минимальной степени (в зависимости от того, какие из них сравниваются). Из этого следует, что разработчики и администраторы баз данньпс, которые пытаются организовать всю свою производственную деятельность на основе использования исключительно одного или двух из перечислен-ньпс выше инструментальньпс средств, фактически лишают себя возможности получения дополнительной информации, которая может оказаться очень важной. Следует также учитывать, что некоторые из указанных инструментальных средств могут применяться и в другой форме, например, если в прикладной системе предусмотрено использование клиентского кода и отправка запросов на сервер (без применения каких-либо хранимых процедур). В частности, при этом для контроля над прохождением запроса на сервер может служить приложение SQL Server Profiler, или даже может быть предусмотрена проверка запроса в приложении Query Analyzer перед отправкой полученных результатов в клиентский код. Различные планы выполнения и операторы statistics в СУБД SQL Server предусмотрено несколько различных вариантов применения операторов SHOWPLAN. Объем информации, предоставляемой этими операторами, во многом зависит от того, какие опции выбраны при вызове их на выполнение, но определенная совокупность данных предоставляется в любом случае, независимо от применения конкретных опций. Следует также отметить, что часть опций операторов SHOWPLAN применяется для получения статистических данных запроса. Опции SHOWPLAN и их назначение рассматриваются в следующем разделе. Оператор showplan text all Применение опций TEXT и ALL оператора SHOWPLAN (они являются взаимоисключающими) приводит к формированию в СУБД SQL Server различных результатов. Формируемые результаты зависят также от того, применяется ли заданная по умолчанию опция NOEXEC (которая указывает, что план запроса должен быть сформирован без фактического выполнения запроса), и если эта опция введена в действие, то в состав полученных результатов входят исключительно те, что были сформированы при выполнении оператора SHOWPLAN. При вызове оператора SHOWPLAN может быть также указано, на каком этапе выполнения запроса разрешено или запрещено его использование. Для этого применяется следующий простой синтаксис: SET SHOWPLAN TEXTALL ONOFF Применение опции TEXT приводит к получению плана запроса, в котором приведена оценка стоимости выполнения этого плана. Еще раз отметим, что опция NOEXEC оператора SHOWPLAN применяется по умолчанию, поэтому полученные данные не содержат результатов выполнения самого запроса. При использовании опции ALL формируются такие же данные, как и при использовании опции TEXT, а дополнительно к ним передается большой объем статистической информации, включая перечисленные ниже сведения. Фактически запланированные физические и логические операции. Оценочное количество обрабатываемых строк. Оценка нагрузки процессора. Оценка количества операций ввода-вывода. Средний размер строки. Информация о том, будет ли запрос выполняться параллельно или нет. Рассмотрим в качестве примера небольшой запрос, в котором используются обе эти опции (еще раз отметим, что их одновременное использование не доп)скается): SET SHOWPLAN TEXT ON GO SELECT * FROM Sales.SalesOrderHeader GO SET SHOWPLAN TEXT OFF GO SET SHOWPLAN ALL ON GO SELECT * FROM Sales.SalesOrderHeader GO SET SHOWPLAN, ALL OFF GO Обратите внимание на то, что за каждым оператором в этом запросе следует команда GO, тем самым превращая каждый оператор в отдельный пакет. Сценарии, содержащие сам запрос, могут состоять из неограниченного количества операторов, но пакеты, к которым применяются команды SHOWPLAN, должны быть заданы отдельно. Та часть результатов, которая относится к вьшолнению операторов SHOWPLAN TEXT, выглядит так: StmtText SELECT * FROM Sales.SalesOrderHeader ------------------ I--Compute Scalar(DEFINE:([AdventureWorks].... I--Compute Scalar(DEFINE:([AdventureWorks]... I--Clustered Index Scan(OBJECT:([AdventureWorks]... (3 row(s) affected) К сожалению, полученные результаты не помещаются по ширине на страницах книги, но даже приведенный листинг позволяет сделать некоторые выводы. Во-первых, приведенные результаты соответствуют несколькрш выполненным шагам. В каждом шаге показано, какой объект подвергался обработке и какая операция была выполнена. Если бы в данном примере рассматривался более крупный запрос, например, состоящий из нескольких соединений, то было бы показано еще больше подпроцессов, а отличие между ними было бы подчеркнуто с помощью отступов. Кроме того, в приведенном выше листинге не показаны результаты, соответствующие параметру ALL, поскольку они просто не помещаются в формате книги (так как имеют ширину приблизительно 800 символов), но следует отметить, что в них содержится большой объем дополнительной информации. Решение о том, какую форму вызова оператора SHOWPLAN след)ет использовать, зависит только от потребностей в получении более Iiли менее подробной информации. Если требуется определить лишь основной план, как при использовании соединения слиянием или хеширован-ного соединения, то, по-видимому, следует применять опцию TEXT. Если же фактически необходимо определить, какова стоимость отдельных операций, а также получить другие подробные сведения, то следует использовать опцию ALL. Применение указанных опций SHOWPIjAN равносильно также вводу в действие опции NOEXEC, которая подразумевает, что фактически ни один оператор запроса не будет выполнен. Иными словами, прежде чем осуществить какие-либо действия по обработке данных в базе данных, необходимо отменить опцию NOEXEC; такое требование является обязательным и в том случае, если происходит переход от одной опции оператора формирования плана выполнения к другой (например, вьшолнение оператора SET SHOWPLAN ALL ON не приведет к получению какого-либо результата, если другой оператор БЕТ SHOWPLAN TEXT ON уже выполнен, а указанная опция не разрешена к использованию повторно). Поэтому автор взял за правило, чтобы в каждом применяемом сценарии вслед за каждым оператором SET SHOWPLAN с опцией ON располагался аналогишый оператор с опцией OFF. Это позволяет организовать единообразную процедуру применения оператора формирования плана вьшолнения и избежать ненужной путаницы. (1 row(s) affected) StmtText
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |