Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Метод указания AIS

.pdf
Скачиваний:
8
Добавлен:
18.02.2016
Размер:
9.86 Mб
Скачать

<тип_объекта> - любой объект из таблицы1, исключая схему.

Удалите индекс

DROP INDEX Student.Index_FIO

Удалите таблицу

DROP TABLE traektoriya

КАТУ ИМ.С.СЕЙФУЛЛИНА

К.Т.Н. ОМАРБЕКОВА А.С.

СУБД

121

18 Использование Object Browser для определения данных

Задание

1.Сформируйте сценарий создания СВОЕЙ таблицы, а также вставки, обновления, удаления строк

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

3.Отобразите план выполнения запроса, трассировку сервера, клиентскую статистику

4.Используйте мастер Index Tuning Wizard для настройки базы данных

DDL-операторы являются не слишком сложными, хотя и составными, однако анализатор запросов Query Analyzer посредством Object Browser предоставляет два метода, с помощью которых DDL будет еще проще использовать. В прошлом уроке мы говорили, что контекстное меню большинства объектов поддерживает команды скриптования, и вы можете использовать их для операторов CREATE, ALTER и DROP применительно к этим объектам.

Query Analyzer также предоставляет шаблоны, которые являются образцами файлов SQL-сценариев с замещаемыми параметрами. Вы можете создать и свои собственные шаблоны, однако SQL Server 2000

предоставляет базовые шаблоны для большинства операторов CREATE.

КАТУСкриптование DDLИМ.С.СЕЙФУЛЛИНА

Создать два сценария для операторов SELECT можно в панели Object Browser. Object Browser

поддерживает сценарии CREATE, ALTER и DROP для большинства объектов базы данных. После Кгенерации.Т.сценарияН.выОМАРБЕКОВАможете видоизменить его для решения своих задач. А.С.

Совет. Операторы CREATE, созданные скриптованием, могут быть сохранены в файле сценария. Это удобно для документирования структуры базы данных.

Сформируйте сценарий CREATEСTABLEУБД

Использование шаблонов

Язык SQL несколько отличается от большинства других языков программирования, таких как C++ или Microsoft Visual Basic, тем, что в нем есть относительно немного операторов, но синтаксис их может быть довольно сложным. Одна из претензий, часто предъявляемых к языку SQL, состоит в том, что все данные извлекаются с помощью одного оператора: оператора SELECT.

Шаблоны являются превосходным средством для работы с составными операторами SQL. При работе с SQL длительное время, вы начинаете замечать, что часто используете лишь несколько более или менее стандартных комбинаций основных команд: например оператор SELECT для двух таблиц, имеющих внутреннюю связь INNER JOIN, или оператор CREATE TABLE с идентификационным столбцом IDENTITY. Сохранив, эти операторы как шаблон, вы одной командой сможете воспроизвести весь содержащийся в шаблоне текст. Для настройки операторов вы можете воспользоваться удобным диалоговым окном.

Совет. Шаблоны могут применяться не только к одной команде. Они могут состоять из любого числа операторов, подобно файлам SQL-сценариев, и могут содержать множество команд и пакетов.

122

Несмотря на широту предоставляемых возможностей, шаблоны просты в использовании и создании. Они являются обычными файлами SQL-сценариев с расширением .tql (по умолчанию). Элементы шаблона могут настраиваться. Например, в операторе CREATE TABLE имена столбцов и таблиц могут быть определены как параметры. В шаблоне параметр имеет такую форму: <имя_параметра, тип_данных, значение>. Например, представленный ниже шаблон сценария, содержит два параметра: table_name и sort_name:

SELECT *

FROM <table_name, sysname, test_view>

ORDER BY <sort_column, sysname, test_column>

Сценарий определяет оба параметра как имеющие тип данных sysname, который является специальным типом, используемым для указания имен объектов. Параметр table_name имеет значение по умолчанию

"test_view", а параметр sort_column имеет значение по умолчанию "test_column".

Анализатор запросов Query Analyzer предоставляет диалоговое окно Replace Template Parameters (Замещение параметров шаблона) для удобного ввода текста в шаблон. Чтобы отобразить это диалоговое окно, откройте шаблон в окне Query (Запрос) и выберите Replace Template Parameters (Замещение параметров шаблона) из меню Edit (Правка).

КАТУСовет. Для открытияИМдиалогового.окнаСReplace.СЕЙФУЛЛИНАTemplate Parameters (Замещение параметров шаблона) вы также можете воспользоваться комбинацией клавиш Ctrl + Shift + M.

Сформируйте оператор CREATE TABLE с помощью шаблона

КАнализзапросов.Н. ОМАРБЕКОВА А.С.

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

Использование Query Analyzer для оптимизации производительности

В добавлении к панели редактирования Editor Pane, окно Query (Запрос) анализатора запросов SQL Server Query Analyzer предоставляет три дополнительных панели для анализа производительности отдельных запросов. Панель Execution Plan Pane содержит графическое представление задач, которые SQL Server будет обрабатывать для выполнения запроса. Панель Trace Pane показывает детальную информацию о выполнении запроса на стороне сервера, включая время и число операций чтения и записи. Панель Client Statistics Pane отображает информацию о выполнении запроса на стороне клиента, включая количество обращений и ответов от сервера и пропускную способность сети.

Планы выполнения

Панель планов выполнения Execution Plan Pane окна Query (Запрос) графически отображает последовательность выполнения вашего запроса SQL Server. На рисунке представлен план выполнения для простого оператора SELECT:

123

Трассировка сервера

SELECT fio,name,otch FROM kontengent order by fio

Панель Execution Plan Pane использует довольно большое количество значков для представления операций, которые может выполнить обработчик запросов. Значки описаны в документации SQL Server Books Online, но нет большой необходимости изучать их. Просто наведите курсор мыши на значок и удерживайте некоторое время на нем, после чего отобразится окно подсказки, описывающее не только действие, представляемое значком, но и некоторый объем полезной информации, такой как цена выполнения ввода/вывода I/O, цена загрузки процессора, число строк в операции и итоговая цена операции. Рисунок показывает окно подсказки для плана выполнения операции кластерного индексного сканирования Clustered Index Scan.

Операции в плане выполнения исполняются слева направо. Окно подсказки для каждой стрелки, соединяющей операции, показывает число строк, выполненных в предыдущей операции и расчетный размер каждой строки, как показано на рисунке.

Помимо отображения операций, которые SQL Server будет исполнять при выполнении определенного запроса, план выполнения также предоставляет механизм для оптимизации запроса. Используя контекстное меню панели плана выполнения Execution Plan Pane, вы можете обновлять статистику,

КАТУиспользуемую оптимизаторомИМзапросовпри.определенииСЕЙФУЛЛИНАстратегии выполнения, и добавлять индексы для оптимизации производительности.

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

SELECT nacion.NAMENAC, COUNT(kontengent.KODNAC) AS Expr1

А.С.

К.Т.Нnacion. ONОМАРБЕКОВАkontengent.KODNAC = nacion.KODNAC

FROM kontengent INNER JOIN

 

GROUP BY nacion.NAMENAC

Вторая утилита Query AnalyzerСУБДпредоставляет возможности анализа производительности запроса через трассировку сервера. Панель Trace Pane показывает команды, которые выполняются на сервере во время исполнения запроса. Команды не соответствуют операциям в плане выполнения – ряд команд выполняется дополнительно, а реальные команды Transact-SQL не будут показаны столь же детально.

Отобразите трассировку сервера

Клиентская статистика

Последней утилитой для анализа запросов, предоставляемой окном Query (Запрос) Query Analyzer является панель клиентской статистики Client Statistics Pane, которая отображает выполнение запроса на стороне клиента.

Информация в панели клиентской статистики Client Statistics Pane делится на три раздела: Application Profile Statistics, в котором содержится информация о количестве выполненных операторов TransactSQL и выполненных строках; Network Statistics, в котором содержится информация о сформированном трафике сети; Time Statistics, который помогает вам определить где происходит замедление: на клиенте или на сервере.

124

Совет. Раздел статистика сети Network Statistics, обеспечиваемая панелью клиентской статистики Client Statistics Pane, будет присутствовать, даже если вы подключены к локальному серверу.

Отобразите клиентскую статистику

Мастер настройки индексов Index Tuning Wizard

Анализатор запросов Query Analyzer предоставляет утилиту для оптимизации приложений вашей базы данных: мастер настройки индексов Index Tuning Wizard. Анализируя вашу базу данных и внося предложения по увеличению производительности, Index Tuning Wizard сохраняет огромное количество времени, которое вам пришлось бы затратить, осуществляя тестирование производительности методом проб и ошибок.

Использование мастера Index Tuning Wizard

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

КАТУProfiler. ИМ.С.СЕЙФУЛЛИНА

Вторая страница мастера требует, чтобы вы указали сервер и базу данных для анализа, а также предоставляет две дополнительных опции выбора: Keep All Existing Indexes (Не изменять существующие индексы) и Tuning Mode (Режим настройки). Опция режимов настройки Tuning Mode

Кзадаетглубинуанализа. ОМАРБЕКОВА, выполняемого мастером. Сбросив установленный по умолчанию флажокА.KeepС. All Existing Indexes (Не изменять существующие индексы), вы позволите мастеру выдавать

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

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

Используйте мастер Index Tuning Wizard для настройки базы данных

1.Перейдите к окну Query (Запрос) и из меню Query (Запрос) выберите Index Tuning Wizard (Мастер настройки индексов). Query Analyzer отобразит первую страницу мастера настройки индексов Index Tuning Wizard.

2.Нажмите Next (Далее). Мастер отобразит страницу, приглашающую вас выбрать базу данных и режим настройки.

3.Убедитесь, что выбрана база данных studentи затем выберите режим настройки Thorough (Полная).

4.Нажмите Next (Далее). Мастер отобразит страницу, приглашающую вас выбрать рабочую нагрузку для анализа.

5.Нажмите кнопку Advanced Options (Дополнительные параметры). Мастер отобразит диалоговое окно с параметрами настройки индексов.

6.Примите установленные по умолчанию значения настройки, нажав OK.

125

7.Примите установленные по умолчанию значения SQL Query Analyzer Selection, нажав кнопку Next (Далее). Мастер отобразит страницу, приглашающую вас выбрать таблицу для настройки.

11.Выберите для анализа таблицу nacion установите значение в столбце Projected Rows на 1000.

12.Нажмите кнопку Next (Далее). Мастер отобразит свои рекомендации.

13.Нажмите кнопку Next (Далее). Мастер отобразит страницу, приглашающую вас выбрать опции выполнения.

14.Выберите Apply Changes (Применить изменения) и примите установленную по умолчанию опцию Execute Recommendations Now (Выполнить рекомендации сейчас).

15.Нажмите кнопку Next (Далее). Мастер отобразит последнюю страницу, позволяющую применить все сделанные вами установки.

Нажмите кнопку Finish (Готово). Мастер отобразит сообщение об успешном выполнении.

КАТУ ИМ.С.СЕЙФУЛЛИНА

К.Т.Н. ОМАРБЕКОВА А.С.

СУБД

126

19 Программные объекты

Задание

1.Необходимо ли удалять временные таблицы вручную?

2.Может ли временная таблица иметь ограничения внешнего ключа?

3.В какой базе данных создаются временные таблицы?

4.Каким образом задается область действия временной таблицы?

5.Создайте локальную и глобальную временные таблицы

6.Используйте созданные временные таблицы из текущего и нового сеанса

7.Перечислите различия между временными переменными и таблицами.

8.Объявите локальную переменную

9.Используйте оператор SELECT для присвоения значений

10.Используйте табличные переменные

11.Используйте глобальные переменные для отображения информации о сервере

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

КАТУВременные объектыИМподдерживаютсяв Transact.СЕЙФУЛЛИНА-SQL посредством созданных временных таблиц и посредством использования переменных. Передача некоторых значений в функцию и хранимую

процедуру реализуется с помощью параметров. Временные таблицы и переменные мы рассмотрим в этом уроке, а параметры – в следующих.

Временные таблицы

КВременные.Т.Нтаблицы.походятОМАРБЕКОВАна обычные таблицы, но существуют только тогда, когда ихАиспользуют. . Они автоматически удаляются Microsoft SQL Server после того, как все пользователи закончили работу

с ними.

Совет. Создание временнойСУБДтаблицы – довольно дорогая процедура с точки зрения потребления ресурсов сервера и циклов процессора. Там, где ранее в большинстве случаев использовались временные таблицы, сейчас можно использовать табличные переменные.

Понятие о временных таблицах

Временные таблицы создаются такими же командами, с помощью которых Transact-SQL создает обычную таблицу – это CREATE или SELECT INTO. Различие состоит лишь в том, что имя временной таблицы начинается либо с #, либо с ##. Таким образом, первый оператор в представленном ниже листинге создает обычную таблицу, а второй – временную таблицу.

CREATE TABLE NormalTable (theKey INT PRIMARY KEY, theValue CHAR(20))

CREATE TABLE #TamporaryTable (theKey INT PRIMARY KEY, theValue CHAR(20))

Единственное обстоятельство, которое следует учитывать при создании временной таблицы, состоит в том, что она не может иметь ограничений внешнего ключа FOREIGN KEY. Все другие возможности оператора CREATE TABLE доступны – временные таблицы могут иметь проверочное ограничение CHECK, значение по умолчанию и любую необходимую вам структуру.

127

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

Область действия временной таблицы определяется ее именем. Временная таблица, имя которой содержится один значок решетки, например #MyTable, имеет локальную (local) область действия. Временная таблица, содержащая в имени два значка, например ##MyTable, имеет глобальную (global) область действия.

Локальные временные таблицы (иногда называемые личными временными таблицами) видимы только в создавшем их соединении. Никакие другие соединения (даже установленные этим же пользователем) не могут их видеть или иметь доступ к ним. Соединение, создавшее временную таблицу, может в любое время удалить ее, но если она после выхода пользователя из системы все еще существует, SQL Server завершает работу таблицы автоматически. Глобальные таблицы, создаваемые указанием в имени двойного символа решетки, доступны всем пользователям. В глобальной таблице не требуется назначения привилегий: любой пользователь получает привилегии автоматически.

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

КАТУзавершено. НапримерИМ, если пользователь.С.А СЕЙФУЛЛИНАсоздаст временную таблицу ##MyTable, пользователь В может выполнить команды через нее. Если пользователь А выйдет из системы, в то время как

пользователь В использует таблицу ##MyTable, то любые исполняемые на данный момент команды SQL Server будут выполнены, но пользователь В не сможет больше исполнить каких-либо команд с помощью этой таблицы.

К.ТИспользование.Н.временныхОМАРБЕКОВАтаблиц А.С. Временные таблицы создаются с помощью таких же команд, как и обычные таблицы: CREATE или SELECT INTO. Предоставляемая таблица является доступной для соединения (т. е., она не считается локальной таблицей, созданнойСУБДдругим соединением), и она может использоваться точно так же, как и обычная таблица.

Создайте локальную временную таблицу

1. В окне Editor введите

2.панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить запрос). Query Analyzer создаст временную таблицу.

3.В панели Object Browser выберите папку User Tables в базе данных tempdb.

128

КАТУ

4. Нажмите клавишу F5 для обновления содержимого окна Object Browser и откройте папку User

К.ТTables. Query.AnalyzerОМАРБЕКОВАотобразит в списке таблицу dbo.#LocalTable. А.С.

Создайте глобальную временнуюСУБДтаблицу

1. Введите

2.В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить запрос). Query Analyzer создаст временную таблицу.

3.В панели Object Browser выберите папку User Tables в базе данных tempdb.

4.Нажмите клавишу F5 для обновления содержимого окна Object Browser. Query Analyzer отобразит в списке таблицу dbo.#GlobalTable.

129

Используйте локальную временную таблицу из текущего сеанса

1. Введите

КАТУ2. В панели инструментовИМанализатора.С.запросовСЕЙФУЛЛИНАQuery Analyzer нажмите кнопку Execute Query (Выполнить сценарий). Query Analyzer выполнит оператор SELECT.

К.Т. А.С.

Используйте глобальную временную таблицу из текущего сеанса

1.Введите

2.В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить сценарий). Query Analyzer выполнит оператор SELECT.

Используйте локальную временную таблицу из другого сеанса

130