A tárolt eljárások nagy hatékonyságot és biztonságot nyújtanak
A Microsoft SQL Server a tárolt eljárási mechanizmust biztosítja az adatbázisfejlesztési folyamat egyszerűsítése érdekében, a Transact-SQL utasítások kezelhető blokkokba csoportosításával. A tárolt eljárások nagyra értékelik a legtöbb SQL Server fejlesztőt, akik megtalálják a hatékonyságot és a biztonsági előnyöket, amelyeket érnek, jól érzik az idő előtti befektetést.
A tárolt eljárások használata előnyei
Miért kell a fejlesztőnek tárolt eljárásokat használni?
Itt vannak a technológia legfontosabb előnyei:
- Előfeldolgozott végrehajtás: Az SQL Server minden egyes tárolt eljárást egyszer összeállít, majd újra felhasználja a végrehajtási tervet. Ez óriási teljesítménynövekedést eredményez, ha a tárolt eljárásokat ismételten hívják.
- Csökkentett ügyfél / kiszolgáló forgalom: Ha a hálózat sávszélessége aggodalomra ad okot a környezetében, akkor örömmel fog tudni arról, hogy a tárolt eljárások csökkenthetik a hosszú SQL lekérdezéseket egy sorra, amelyet a vezetéken keresztül továbbítanak.
- A kód hatékony újrafelhasználása és a programozás absztrakciója: A tárolt eljárásokat több felhasználó és ügyfélprogram is használhatja. Ha tervezett módon használja őket, akkor a fejlesztési ciklus kevesebb időt vesz igénybe.
- Továbbfejlesztett biztonsági ellenőrzések: A felhasználók engedélyezhetik a tárolt eljárás végrehajtását az alapul szolgáló táblagevitelektől függetlenül.
A tárolt eljárások hasonlóak a felhasználó által meghatározott funkciókhoz, de vannak apró különbségek.
Szerkezet
A tárolt eljárások hasonlóak a többi programozási nyelv konstrukcióihoz.
Az adatokat beviteli paraméterek formájában fogadják el, amelyeket a végrehajtási időben határoztak meg. Ezeket a bemeneti paramétereket (ha implementálják) használják egy sor olyan állítás végrehajtására, amelyek bizonyos eredményeket hoznak. Ezt az eredményt visszaadja a hívó környezetnek egy rekordlettel, kimeneti paraméterekkel és visszatérési kóddal.
Ez úgy hangzik, mint egy falat, de azt fogja találni, hogy a tárolt eljárások valójában nagyon egyszerű.
Példa
Vessünk egy gyakorlati példát a lap alján feltüntetett táblára vonatkozó gyakorlati példával kapcsolatban. Ez az információ valós időben frissül, és a raktárkezelők folyamatosan ellenőrzik a raktárban tárolt és szállítandó termékek szintjét. A múltban minden kezelő az alábbiakhoz hasonló lekérdezéseket indított el:
SELECT termék, mennyiség
FROM Inventory
WHERE Raktár = 'FL'
Ez eredménytelenedést eredményezett az SQL Server-en. Minden alkalommal, amikor egy raktárkezelő végrehajtotta a lekérdezést, az adatbázis-kiszolgáló kénytelen volt újrafordítani a lekérdezést és végrehajtani azt a semmiből. Azt is megkövetelte, hogy a raktárkezelő ismerje meg az SQL-t és a megfelelő hozzáférési jogosultságokat a táblázatinformációkhoz.
Ehelyett a folyamat egy tárolt eljárás használatával egyszerűsíthető. Itt van egy sp_GetInventory nevű eljárás kódja, amely lekérdezi az adott raktár készletszintjét.
CREATE PROCEDURE sp_GetInventory
@ helymegosztás varchar (10)
MINT
SELECT termék, mennyiség
FROM Inventory
WHERE Raktár = @ helymeghatározás
A floridai raktárkezelő a következő parancs kiadásával elérheti a készletszinteket:
EXECUTE sp_GetInventory 'FL'
A New York-i raktárkezelő ugyanazt a tárolt eljárást alkalmazhatja a terület leltárának eléréséhez:
EXECUTE sp_GetInventory 'NY'
Nyilvánvaló, ez egy egyszerű példa, de az absztrakció előnyei itt láthatók. A raktárkezelőnek nem kell megértenie az SQL-t vagy az eljárás belső működését. A teljesítmény szempontjából a tárolt eljárás csodákat tesz. Az SQL Server létrehoz egy végrehajtási tervet, majd újra felhasználja a megfelelő paraméterek csatlakoztatásával a végrehajtás idején.
Most, hogy megtanulta a tárolt eljárások előnyeit, lépjen ki és használja őket.
Próbáljon ki néhány példát és mérje meg az elért teljesítménynöveléseket - csodálkozni fogsz!
Leltár táblázat
ID | Termék | Raktár | Mennyiség |
142 | Zöldbab | NY | 100 |
214 | borsó | FL | 200 |
825 | Kukorica | NY | 140 |
512 | Lima bab | NY | 180 |
491 | paradicsom | FL | 80 |
379 | Görögdinnye | FL | 85 |