Shranjene procedure daju visoku efikasnost i sigurnosne prednosti
Microsoft SQL Server obezbeđuje mehanizam sačuvanog postupka za pojednostavljivanje procesa razvoja baze podataka grupiranjem Transact-SQL izraza u upravljačkim blokovima. Većina SQL Serverovih programera koji cene efikasnost i sigurnu prednost koju koriste, vrednuju unapred ulaganja u vremenu.
Koristi korišćenja pohranjenih procedura
Zašto bi programer trebao koristiti pohranjene procedure?
Evo ključnih prednosti ove tehnologije:
- Prethodno kompajlirano izvršenje: SQL Server jednom sastavlja svaku pohranjenu proceduru, a zatim ponovo izvršava plan izvršenja. Ovo dovodi do ogromnog povećanja performansi kada se pohranjene procedure pozivaju više puta.
- Smanjeni promet sa klijentom / serverom: Ako je širina mreže zabrinuta u vašem okruženju, bićete srećni da saznate da pohranjene procedure mogu da smanje dugačke SQL upite na jednu liniju koja se prenosi preko žice.
- Efikasna ponovna upotreba koda i apstrakcije programa: Sastavljene procedure mogu koristiti višestruki korisnici i klijentski programi. Ako ih iskoristite na planiran način, videćete da razvojni ciklus traje manje vremena.
- Poboljšane sigurnosne kontrole: Korisnicima možete dozvoliti da izvrše skladištenu proceduru nezavisno od dozvoljenih dozvola tablice.
Čuvane procedure su slične korisničkim funkcijama, ali postoje suptilne razlike.
Struktura
Čuvane procedure slične su konstrukcijama koje se vide na drugim programskim jezicima.
Prihvataju podatke u obliku ulaznih parametara koji su navedeni u vrijeme izvršenja. Ovi ulazni parametri (ako se implementiraju) koriste se u izvršenju serije izjava koje proizvode neki rezultat. Ovaj rezultat se vraća u pozivno okruženje korištenjem registra, parametara izlaznih podataka i povratnog koda.
To može zvučati kao usta, ali ćete naći da su pohranjene procedure zapravo prilično jednostavne.
Primjer
Hajde da pogledamo praktičan primer koji se odnosi na tablicu nazvanu inventar prikazan na dnu ove stranice. Ove informacije se ažuriraju u realnom vremenu, a rukovodioci skladišta stalno proveravaju nivoe proizvoda koji se čuvaju u njihovom skladištu i dostupni za isporuku. U prošlosti, svaki menadžer će pokrenuti upite slične onima koji slijede:
SELECT Product, Quantity
FROM Inventory
Gdje je skladište = 'FL'
To je rezultiralo neefikasnim performansama na SQL Serveru. Svaki put kada je menadžer skladišta izvršio upit, server baze podataka bio je prinuđen da ponovo izvrši kompajliranje i izvrši ga iz nule. Takođe je bilo potrebno da menadžer skladišta ima znanja o SQL-u i odgovarajuće dozvole za pristup informacijama tablice.
Umesto toga, proces se može pojednostaviti upotrebom uskladištene procedure. Evo šifre procedure koja se zove sp_GetInventory koja preuzima nivo inventara za određeno skladište.
CREATE PROCEDURE sp_GetInventory
@location varchar (10)
AS
SELECT Product, Quantity
FROM Inventory
Gdje je skladište = @lokacija
Menadzer magacina u Floridi može onda pristupiti nivoima inventara izdavanjem naredbe:
EXECUTE sp_GetInventory 'FL'
Menadžer magacina skladišta u Njujorku može koristiti istu pohranjenu proceduru za pristup popisu tog područja:
EXECUTE sp_GetInventory 'NY'
Naravno, ovo je jednostavan primer, ali prednosti apstrakcije se mogu videti ovde. Menadžer magacina ne mora razumjeti SQL ili unutrašnje radnje postupka. Iz perspektive performansi, čuvana procedura radi na čudama. SQL Server jednom kreira plan izvršavanja i zatim ga ponovo koristi tako što uključuje odgovarajuće parametre u vreme izvršenja.
Sada kada ste naučili prednosti skladištenih procedura, izadite tamo i koristite ih.
Probajte nekoliko primera i izmerite poboljšanja performansi postignuta-bićete zapanjeni!
Tabela inventara
ID | Proizvod | Skladište | Količina |
142 | Boranija | NY | 100 |
214 | Grah | FL | 200 |
825 | Kukuruz | NY | 140 |
512 | Lima pasulj | NY | 180 |
491 | Paradajz | FL | 80 |
379 | Lubenica | FL | 85 |