Схрањене процедуре дају високу ефикасност и сигурносне предности
Мицрософт СКЛ Сервер обезбеђује механизам сачуваног поступка за поједностављивање процеса развоја базе података групирањем Трансацт-СКЛ израза у управљачким блоковима. Већина СКЛ Серверових програмера који цене ефикасност и сигурну предност коју користе, вреднују унапред улагања у времену.
Користи коришћења ускладиштених процедура
Зашто би програмер требао користити похрањене процедуре?
Ево кључних предности ове технологије:
- Прекомпликовано извршење: СКЛ Сервер једном саставља сваку похрањену процедуру, а затим поново извршава план извршења. Ово доводи до огромног повећања перформанси када се похрањене процедуре позивају више пута.
- Смањен клијент / сервер: Ако је мрежни пропусни опсег брига у вашем окружењу, биће вам драго да сазнајемо да ускладиштене процедуре могу смањити дуге СКЛ упите на једну линију која се преноси преко жице.
- Ефикасна поновна употреба кода и апстракција програма: Састављене процедуре могу користити вишеструки корисници и клијентски програми. Ако их искористите на планиран начин, видећете да развојни циклус траје мање времена.
- Побољшане безбедносне контроле: Корисницима можете дозволити да изврше складиштену процедуру независно од дозвољених дозвола табеле.
Схрањене процедуре су сличне корисничким функцијама, али постоје суптилне разлике.
Структура
Чуване процедуре сличне су конструкцијама које се виде у другим програмским језицима.
Прихватају податке у облику улазних параметара који су наведени у вријеме извршења. Ови улазни параметри (ако се имплементирају) користе се у извршењу серије изјава које производе неки резултат. Овај резултат се враћа у позивно окружење кориштењем регистра, параметара излазних података и повратног кода.
То може звучати као уста, али ћете наћи да су похрањене процедуре заправо прилично једноставне.
Пример
Хајде да погледамо практичан пример који се односи на таблицу названу инвентар приказан на дну ове странице. Ове информације се ажурирају у реалном времену, а руководиоци складишта стално проверавају нивое производа који се чувају у свом складишту и доступни за испоруку. У прошлости, сваки менаџер ће покренути упите сличне следећим:
СЕЛЕЦТ Продуцт, Куантити
ФРОМ Инвентори
ВХЕРЕ Варехоусе = 'ФЛ'
Ово је резултирало неефикасним перформансама на СКЛ Серверу. Сваки пут када је менаџер складишта извршио упит, сервер базе података био је принуђен да поново изврши компајлирање и изврши га из нуле. Такође је захтевао да менаџер складишта има знања о СКЛ-у и одговарајуће дозволе за приступ информацијама таблице.
Уместо тога, процес се може поједноставити употребом ускладиштене процедуре. Ево шифре процедуре која се зове сп_ГетИнвентори која преузима ниво инвентара за одређено складиште.
ЦРЕАТЕ ПРОЦЕДУРЕ сп_ГетИнвентори
@лоцатион варцхар (10)
КАО
СЕЛЕЦТ Продуцт, Куантити
ФРОМ Инвентори
Гдје је складиште = @локација
Менадзер магацина у Флориди може онда приступити нивоима инвентара издавањем наредбе:
ЕКСЕЦУТЕ сп_ГетИнвентори 'ФЛ'
Менаџер магацина складишта у Њујорку може користити исту ускладиштену процедуру за приступ попису тог подручја:
ЕКСЕЦУТЕ сп_ГетИнвентори 'НИ'
Наравно, ово је једноставан пример, али предности апстракције могу се видети овде. Менаџер складишта не мора разумјети СКЛ или унутрашње радње поступка. Из перспективе перформанси, чувена процедура ради на чудама. СКЛ Сервер једном креира план за извршење, а затим га поново извршава укључивањем одговарајућих параметара у време извршења.
Сада када сте научили предности складиштених процедура, изадите тамо и користите их.
Пробајте неколико примера и измерите побољшања перформанси постигнутих - бићете запањени!
Табела инвентара
ИД | Производ | Складиште | Количина |
142 | Боранија | НИ | 100 |
214 | Пеас | ФЛ | 200 |
825 | Кукуруз | НИ | 140 |
512 | Лима пасуљ | НИ | 180 |
491 | Парадајз | ФЛ | 80 |
379 | Лубеница | ФЛ | 85 |