Uložené procedúry prinášajú vysokú účinnosť a výhody v oblasti bezpečnosti
Microsoft SQL Server poskytuje mechanizmus uloženej procedúry na zjednodušenie procesu vývoja databázy zoskupením príkazov Transact-SQL do zvládnuteľných blokov. Uložené procedúry sú oceňované väčšinou developerov serverov SQL Server, ktorí zistili, že výhody a efektívne výhody, ktoré prinášajú, stojí za to vopred.
Výhody používania uložených procedúr
Prečo by mal vývojár používať uložené procedúry?
Tu sú kľúčové výhody tejto technológie:
- Predkompilované vykonanie: SQL Server raz kompiluje každú uloženú procedúru a potom znovu použije plán vykonávania. To vedie k obrovskému zvýšeniu výkonu, keď sa opakovane nazývajú uložené procedúry.
- Znížená návštevnosť medzi klientom a serverom: ak je sieťová šírka vo vašom prostredí znepokojená, radi sa dozviete, že uložené procedúry môžu znižovať dlhé SQL dotazy na jediný riadok, ktorý sa prenáša cez kábel.
- Efektívne opätovné použitie kódu a programovania abstrakcie: Uložené procedúry môžu používať viacerí používatelia a klientske programy. Ak ich využijete plánovane, zistíte, že vývojový cyklus trvá menej času.
- Vylepšené ovládacie prvky zabezpečenia: Môžete udeliť používateľom povolenie na vykonanie uloženej procedúry nezávisle od základných oprávnení tabuľky.
Uložené procedúry sú podobné používateľom definovaným funkciám, existujú však jemné rozdiely.
štruktúra
Uložené procedúry sú podobné konštrukciám zobrazeným v iných programovacích jazykoch.
Prijímajú údaje vo forme vstupných parametrov, ktoré sú špecifikované v čase realizácie. Tieto vstupné parametre (ak sú implementované) sa využívajú pri vykonávaní série vyhlásení, ktoré prinášajú určitý výsledok. Tento výsledok sa vráti do volajúceho prostredia pomocou súborov záznamov, výstupných parametrov a návratového kódu.
To môže znieť ako huba, ale zistíte, že uložené procedúry sú vlastne celkom jednoduché.
príklad
Poďme sa pozrieť na praktický príklad súvisiaci s tabuľkou nazvanou inventár zobrazenou v spodnej časti tejto stránky. Tieto informácie sa aktualizujú v reálnom čase a správcovia skladu neustále kontrolujú úrovne produktov uložených v ich sklade a sú k dispozícii na odoslanie. V minulosti by každý manažér mohol spúšťať dopyty podobné nasledujúcim:
VÝBER produktu, množstvo
Z inventára
WHERE sklad = 'FL'
To viedlo k neefektívnemu výkonu na serveri SQL Server. Pokaždé, keď manažér skladu vykonal dotaz, bol databázový server nútený prekompilovať dotaz a spustiť ho od začiatku. Vyžadovalo tiež, aby správca skladu vedel o znalosti SQL a príslušných povoleniach na prístup k informáciám o tabuľke.
Namiesto toho môže byť proces zjednodušený pomocou uloženej procedúry. Tu je kód pre postup s názvom sp_GetInventory, ktorý načíta hladiny zásob pre daný sklad.
CREATE POSTUP sp_GetInventory
@location varchar (10)
AS
VÝBER produktu, množstvo
Z inventára
KDE SKLADAŤ = @ umiestnenie
Správca skladov v štáte Florida môže potom pristupovať k hladinám zásob pomocou príkazu:
EXECUTE sp_GetInventory 'FL'
Manažér skladov v New Yorku môže použiť rovnakú uloženú procedúru na prístup k inventáru tejto oblasti:
EXECUTE sp_GetInventory 'NY'
Toto je jednoduchý príklad, ale tu vidíme výhody abstrakcie. Správca skladu nemusí chápať SQL alebo vnútorné fungovanie postupu. Z hľadiska výkonnosti je uložená procedúra zázračná. SQL Server raz a potom znovu použije plán spúšťania pripojením príslušných parametrov v čase vykonania.
Teraz, keď ste sa naučili výhody uložených procedúr, odistite sa a použite ich.
Vyskúšajte niekoľko príkladov a zmerajte dosiahnuté vylepšenia - budete ohromení!
Tabuľka zásob
ID | výrobok | sklad | množstvo |
142 | Zelené fazule | NY | 100 |
214 | Hrach | FL | 200 |
825 | kukurica | NY | 140 |
512 | Lima fazuľa | NY | 180 |
491 | paradajky | FL | 80 |
379 | vodný melón | FL | 85 |