Uložené postupy přinášejí vysokou efektivitu a bezpečnostní výhody
Microsoft SQL Server poskytuje mechanismus uložené procedury pro zjednodušení procesu vývoje databáze tím, že seskupí příkazy Transact-SQL do spravovatelných bloků. Uložené procedury jsou oceňovány většinou vývojářů serveru SQL Server, kteří hledají efektivitu a bezpečnostní výhody, které prožívají.
Výhody použití uložených procedur
Proč by měl vývojář používat uložené procedury?
Zde jsou klíčové výhody této technologie:
- Předkompilované spuštění: SQL Server jednou sestavuje každou uloženou proceduru a potom opětovně použije plán provádění. Výsledkem je obrovské zvýšení výkonu při opakovaném uložení uložených procedur.
- Snížení návštěvnosti klientů / serverů: Pokud je ve vašem prostředí problém s šířkou pásma, rádi vám ukážeme, že uložené procedury mohou omezit dlouhé dotazy SQL na jediný řádek, který se přenáší přes drát.
- Efektivní opětovné použití kódu a programování abstrakce: Uložené procedury mohou být použity více uživateli a klientskými programy. Pokud je využijete plánovaným způsobem, zjistíte, že vývojový cyklus trvá méně času.
- Vylepšené ovládací prvky zabezpečení: uživatelům můžete udělit oprávnění k provedení uložené procedury nezávisle na oprávněních tabulky.
Uložené procedury jsou podobné uživatelsky definovaným funkcím, ale existují jemné rozdíly.
Struktura
Uložené procedury jsou podobné konstrukcím v jiných programovacích jazycích.
Přijmou data ve formě vstupních parametrů, které jsou zadány v době provedení. Tyto vstupní parametry (pokud jsou implementovány) jsou využívány při provádění řady příkazů, které vytvářejí nějaký výsledek. Tento výsledek se vrací do volajícího prostředí pomocí sady záznamů, výstupních parametrů a návratového kódu.
To může znít jako ústa, ale zjistíte, že uložené procedury jsou vlastně poměrně jednoduché.
Příklad
Podívejme se na praktický příklad, který se týká tabulky s názvem inventář zobrazeného v dolní části této stránky. Tyto informace jsou aktualizovány v reálném čase a správci skladu neustále kontrolují úrovně produktů uložených v jejich skladu a jsou k dispozici k odeslání. V minulosti by každý správce spouštěl dotazy podobné následujícím:
SELECT produkt, množství
Z inventáře
WHERE Warehouse = 'FL'
To vedlo k neefektivnímu výkonu na serveru SQL Server. Pokaždé, když správce skladu spustil dotaz, byl databázový server nucen znovu zkompilovat dotaz a spustit ho od začátku. To také vyžadovalo, aby správce skladu měl znalosti o SQL a příslušná oprávnění k přístupu k informacím o tabulce.
Místo toho lze tento proces zjednodušit pomocí uložené procedury. Zde je kód pro postup s názvem sp_GetInventory, který načte úroveň zásob pro daný sklad.
CREATE POSTUP sp_GetInventory
@location varchar (10)
TAK JAKO
SELECT produkt, množství
Z inventáře
WHERE Warehouse = @location
Správce skladů ve Floridě pak může přistupovat k hladinám inventáře vydáním příkazu:
EXECUTE sp_GetInventory 'FL'
Správce skladů v New Yorku může použít stejnou uloženou proceduru pro přístup k inventářům této oblasti:
EXECUTE sp_GetInventory 'NY'
Je to jednoduchý příklad, ale přínos abstrakce je zde vidět. Správce skladů nemusí chápat SQL nebo vnitřní fungování procedury. Z pohledu výkonů se ukládá záchranná procedura. SQL Server vytvoří plán spouštění jednou a poté jej znovu použije připojením příslušných parametrů v době provedení.
Nyní, když jste se naučili výhody uložených procedur, vyjděte je a použijte je.
Vyzkoušejte několik příkladů a změřte dosažené zlepšení výkonu - budete ohromeni!
Tabulka zásob
ID | Produkt | Sklad | Množství |
142 | Zelené fazole | NY | 100 |
214 | Hrách | FL | 200 |
825 | Kukuřice | NY | 140 |
512 | Lima fazole | NY | 180 |
491 | Rajčata | FL | 80 |
379 | Vodní meloun | FL | 85 |