Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Автоматическая повторная компиляция




Компиляция хранимой процедуры

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

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

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

· Процедура всегда перекомпилируется при начале работы SQL Server. Обычно это происходит после перезагрузки операционной системы и при первом выполнении процедуры после создания.

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

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

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

Для установки автоматического выполнения процедуры при загрузке SQL Server используют системную хранимую процедуру sp_Makestartup. Можно определить любое количество процедур, которые будут автоматически выполняться в начале работы. Синтаксис процедуры sp_makestartup:

SP_MAKESTARTUP имя_процедуры

Автоматически выполняемые в начале работы SQL Server процедуры активизируются после открытия и восстановления всех баз данных. Для просмотра списка процедур, автоматически выполняемых в начале работы, применяют системную процедуру sp_helpstartup. Чтобы запретить процедуре выполняться автоматически, применяют системную процедуру SP_UNMAKESTARTUP.

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

· Процедуры

· Правила

· Установки по умолчанию

· Триггеры

· Представления

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

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

IF выражение

инструкция

[ELSE]

[IF выражение

инструкция]

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

BEGIN

инструкции

END

Ключевое слово while применяется для выполнения одного или нескольких инструкций Transact-SQL, при истинности заданного условия. Инструкция, следующая за while, выполняется циклически, пока проверяемое условие истинно. Синтаксис инструкции while:

WHILE <логическое_выражение>

<инструкция_SQL>

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

WHILE <логическое_выражение>

<инструкция_ SQL>

BREAK

<инструкция_SQL>

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

WHILE <логическое_выражение>

<инструкция>

CONTINUE

<инструкция>

Выражение case применяется для селективного выбора на основании нескольких опций. Конструкция case даст возможность произвести тестирование входных данных, по результатам которого принимается решение о том, какое действие должно быть предпринято. Синтаксис выражения case:

CASE [ выражение ]

WHEN простое_выражение1 | логическое_выражение1 THEN выражение1

[ [WHEN простое_выражение2 | логическое_выражение2 THEN выражение2] [...]]

[ELSE выражениеN]

END

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

В простых выражениях case значение оператора, следующего сразу же за ключевым словом case, всегда точно совпадает со значением, находящимся после ключевого слова when.


30. Физическая организация данных. Механизмы среды хранения и архитектура БД. Структура хранимых данных. Виды адресации хранимых записей. Способы доступа к данным. Индексирование. Хеширование.





Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 428; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.