Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!!! Конспект ББД 2.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
60.61 Кб
Скачать

Хранимые процедуры Управление процессом компиляции хранимых процедур

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

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

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

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

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

Можно вызвать принудительную перекомпиляцию хранимой процедуры, воспользовавшись системной хранимой процедурой sp_recompile. В результате при следующем вызове указанной хранимой процедуры оптимизатором запросов будет произведена перекомпиляция её кода.

Управление автоматическим выполнением хранимых процедур

Можно предписать системе инициировать выполнение хранимой процедуры автоматически при каждом запуске SQL Server. подобный подход часто используется для выполнения различных административных задач. Например, можно написать хранимую процедуру, которая при старте системы выполняет проверку целостности БД, а затем выполняет резервное копирование этой БД.

Иногда автоматически запускаемые хранимые процедуры используются для создания временных таблиц в БД tempdb. Это гарантирует, что при каждом запуске SQL Server будет создаваться одинаковый набор временных таблиц. Определить для хранимых процедур возможность автоматического запуска могут только участники стандартной группы sysadmin. Для этой цели используется специальная хранимая процедура sp_procoptioier. При этом в процессе выполнения данная хранимая процедура будет обладать тем же набором прав, что и участники стандартной роли sysadmin.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]