Программирование

Хранимые процедуры SQL Server

Microsoft SQL Server предоставляет механизм хранимых процедур для упрощения процесса разработки базы данных путем группировки операторов Transact-SQL в управляемые блоки. Хранимые процедуры ценятся большинством разработчиков SQL Server, которые считают, что преимущества в эффективности и безопасности, которые они получают, вполне стоят первоначальных затрат времени.

Преимущества использования хранимых процедур

Почему разработчик должен использовать хранимые процедуры? Вот основные преимущества этой технологии:

  • Прекомпилированное выполнение:  SQL Server компилирует каждую хранимую процедуру один раз, а затем повторно использует план выполнения. Это приводит к значительному повышению производительности при многократном вызове хранимых процедур.
  • Сокращение трафика клиент / сервер:  если пропускная способность сети является проблемой в вашей среде, вы будете рады узнать, что хранимые процедуры могут сократить длинные запросы SQL до одной строки, передаваемой по проводам.
  • Эффективное повторное использование кода и программной абстракции:  хранимые процедуры могут использоваться несколькими пользователями и клиентскими программами. Если вы используете их запланированным образом, вы обнаружите, что цикл разработки занимает меньше времени.
  • Расширенные элементы управления безопасностью:  вы можете предоставить пользователям разрешение на выполнение хранимой процедуры независимо от базовых разрешений таблицы.

Хранимые процедуры похожи на пользовательские функции, но есть небольшие различия.

Состав

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

пример

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

SELECT Product, Quantity
FROM Inventory
WHERE Warehouse = 'FL'

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

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

CREATE PROCEDURE sp_GetInventory
@location varchar(10)
AS
SELECT Product, Quantity
FROM Inventory
WHERE Warehouse = @location

Затем менеджер склада во Флориде может получить доступ к уровням запасов, выполнив команду:

EXECUTE sp_GetInventory 'FL'

Менеджер склада в Нью-Йорке может использовать ту же хранимую процедуру для доступа к инвентарю этой области:

EXECUTE sp_GetInventory 'NY'

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

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

Похожие посты
Программирование

Что такое канал RSS? (И где его взять)

Программирование

7 причин, почему изображения не загружаются на ваш сайт

Программирование

Запустите агент SQL Server: настройте SQL Server 2012

Программирование

15 лучших бесплатных обоев дня Святого Патрика