Saglabātās procedūras nodrošina augstas efektivitātes un drošības priekšrocības
Microsoft SQL Server nodrošina glabāšanas procedūras mehānismu, lai vienkāršotu datu bāzes izstrādes procesu, grupējot Transact-SQL paziņojumus pārvaldāmajos blokos. Saglabātās procedūras novērtē lielākā daļa SQL Server izstrādātāju, kuri uzskata, ka efektivitāte un drošības priekšrocības, ko viņi gūst, ir labi vērsti uz sākotnējiem ieguldījumiem laikā.
Ieguvumi no saglabāto procedūru izmantošanas
Kāpēc attīstītājam jāizmanto glabātas procedūras?
Šeit ir šīs tehnoloģijas galvenās priekšrocības:
- Iepriekš kompilēta izpilde: SQL Server katru reizi apkopo katru glabā procedūru un pēc tam atkārto izpildes plānu. Tas nodrošina milzīgu veiktspēju, ja glabā procedūras tiek sauktas atkārtoti.
- Samazināta klienta / servera datplūsma. Ja jūsu vidē ir bažas par tīkla joslas platumu, jūs labprāt uzzināsiet, ka glabā procedūras var samazināt ilgtermiņa SQL vaicājumus uz vienu līniju, kas tiek nosūtīta pa vadu.
- Koda efektīva atkārtota izmantošana un programmu ieguve: saglabātās procedūras var izmantot vairāki lietotāji un klientu programmas. Ja jūs tos izmantosiet plānotā veidā, jūs atradīsiet, ka izstrādes cikls aizņem mazāk laika.
- Uzlabota drošības kontrole: jūs varat piešķirt lietotājiem atļauju izpildīt glabāto procedūru neatkarīgi no pamata tabulas atļaujām.
Saglabātās procedūras ir līdzīgas lietotāja definētām funkcijām, bet ir smalkas atšķirības.
Struktūra
Saglabātās procedūras ir līdzīgas konstrukcijām, kuras redzamas citās programmēšanas valodās.
Tie pieņem datus ievades parametru veidā, kas norādīti izpildes laikā. Šie ieejas parametri (ja tie tiek īstenoti) tiek izmantoti, lai izpildītu virkni paziņojumu, kas rada kādu rezultātu. Šis rezultāts tiek atgriezts zvanīšanas videi, izmantojot ierakstu komplektu, izvades parametrus un atgriešanās kodu.
Tas var izklausīties kā kumoss, bet jūs atradīsit, ka glabā procedūras ir diezgan vienkārši.
Piemērs
Apskatīsim praktisku piemēru, kas saistīts ar tabulas nosaukumu, kas norādīts šīs lapas apakšdaļā. Šī informācija tiek atjaunināta reālajā laikā, un noliktavas vadītāji pastāvīgi pārbauda to noliktavās uzglabāto produktu daudzumu, kas ir pieejami sūtījumam. Agrāk katrs vadītājs darbosies ar šādiem jautājumiem līdzīgus jautājumus:
SELECT Produkts, daudzums
NO inventarizācijas
KUR VANA = 'FL'
Tas izraisīja neefektīvu veiktspēju SQL Server. Katru reizi, kad noliktavas menedžeris izpildīja vaicājumu, datu bāzes serveris bija spiests pārkvalificēt vaicājumu un izpildīt to no nulles. Tas arī prasīja, lai noliktavas vadītājs zinātu SQL un atbilstošas atļaujas, lai piekļūtu tabulas informācijai.
Tā vietā procesu var vienkāršot, izmantojot glabāto procedūru. Tālāk ir parādīts procedūras kods, ko sauc par sp_GetInventory, kas izgūst inventāra līmeņus konkrētai noliktavai.
CREATE PROCEDURE sp_GetInventory
@location varchar (10)
AS
SELECT Produkts, daudzums
NO inventarizācijas
KUR WAREHOUSE = @ atrašanās vieta
Pēc tam Florida noliktavas menedžeris var piekļūt krājumu līmeņiem, izdodot komandu:
EXECUTE sp_GetInventory "FL"
Ņujorkas noliktavas pārvaldnieks var izmantot to pašu glabā procedūru, lai piekļūtu šīs teritorijas inventarizācijai:
EXECUTE sp_GetInventory "NY"
Piešķirtais ir vienkāršs piemērs, bet abstrakcijas priekšrocības ir redzamas šeit. Noliktavas vadītājam nav nepieciešams izprast SQL vai procedūras iekšējās darbības. No veiktspējas perspektīvas glabāto procedūru var radīt brīnumi. SQL Server vienu reizi izpilda izpildes plānu un pēc tam atkārto to, to izpildot, pieslēdzot atbilstošiem parametriem.
Tagad, kad esat uzzinājis glabāto procedūru priekšrocības, izejiet tur un izmantojiet tos.
Izmēģiniet dažus piemērus un novērtējiet sasniegtos veiktspējas uzlabojumus - jūs būsiet pārsteigti!
Inventāra tabula
ID | Produkts | Noliktava | Daudzums |
142 | Zaļās pupiņas | NY | 100 |
214 | Zirņi | FL | 200 |
825 | Kukurūza | NY | 140 |
512 | Lima pupiņas | NY | 180 |
491 | Tomāti | FL | 80 |
379 | Arbūzs | FL | 85 |