Gebergde prosedures lewer hoë doeltreffendheid en sekuriteitsvoordele
Microsoft SQL Server bied die gestoor prosedure meganisme om die databasis ontwikkelingsproses te vereenvoudig deur Transact-SQL-stellings in bestuurbare blokke te groepeer. Gestoor prosedures word waardeer deur die meeste SQL Server-ontwikkelaars wat die doeltreffendheids- en veiligheidsvoordele wat hulle maai, die moeite werd is om die voorafgaande belegging betyds te waardeer.
Voordele van die gebruik van gestoor prosedures
Hoekom moet 'n ontwikkelaar gestoor prosedures gebruik?
Hier is die belangrikste voordele van hierdie tegnologie:
- Voorafgemaakte uitvoering: SQL Server stel elke gestoor proses een keer op en maak dan die uitvoering plan weer. Dit lei tot 'n geweldige prestasie hupstoot wanneer gestoor prosedures herhaaldelik genoem word.
- Verminderde kliënt / bedienerverkeer: As netwerkbandwydte 'n bron in jou omgewing is, sal jy bly wees dat gestoor prosedures lang SQL-navrae kan verminder tot 'n enkele lyn wat oor die draad oorgedra word.
- Doeltreffende hergebruik van kode en programmering abstraksie: Gestoor prosedures kan gebruik word deur verskeie gebruikers en kliënt programme. As jy dit op 'n beplande manier gebruik, sal jy vind dat die ontwikkelingsiklus minder tyd neem.
- Verbeterde sekuriteitsbeheer: U kan gebruikers toestemming gee om 'n gestoor prosedure uit te voer onafhanklik van die onderliggende tabel toestemmings.
Gestoor prosedures is soortgelyk aan gebruiker-gedefinieerde funksies, maar daar is subtiele verskille.
struktuur
Gestoor prosedures is soortgelyk aan die konstrukte wat in ander programmeertale gesien word.
Hulle aanvaar data in die vorm van invoer parameters wat op uitvoeringstyd gespesifiseer word. Hierdie insetparameters (indien geïmplementeer) word gebruik in die uitvoering van 'n reeks stellings wat tot gevolg het. Hierdie resultaat word teruggestuur na die roerende omgewing deur gebruik te maak van 'n rekordverstelling, uitvoerparameters en 'n retourkode.
Dit klink dalk soos 'n mondvol, maar jy sal vind dat gestoor prosedures eintlik redelik eenvoudig is.
voorbeeld
Kom ons kyk na 'n praktiese voorbeeld wat verband hou met die tabel wat genoem word onderaan hierdie bladsy. Hierdie inligting word in reële tyd opgedateer, en pakhuisbestuurders monitor die produkte wat in hul pakhuis gestoor word en word vir verskeping beskikbaar. In die verlede sal elke bestuurder navrae doen wat soortgelyk is aan die volgende:
SELECT Product, Hoeveelheid
Uit voorraad
WAAR Warehouse = 'FL'
Dit het gelei tot ondoeltreffende prestasie by die SQL Server. Elke keer as 'n pakhuisbestuurder die navraag uitgevoer het, is die databasisbediener verplig om die soektog te kompilereer en dit van nuuts af af te voer. Dit het ook vereis dat die pakhuisbestuurder kennis dra van SQL en toepaslike regte om toegang tot die tabelinligting te verkry.
In plaas daarvan kan die proses vereenvoudig word deur gebruik te maak van 'n gestoor prosedure. Hier is die kode vir 'n prosedure genaamd sp_GetInventory wat die voorraadvlakke vir 'n gegewe pakhuis haal.
SKEP PROSEDURE sp_GetInventory
@location varchar (10)
AS
SELECT Product, Hoeveelheid
Uit voorraad
WAAR Pakhuis = @ ligging
Die Florida-pakhuisbestuurder kan dan voorraadvlakke bereik deur die opdrag uit te reik:
UITVOER sp_GetInventory 'FL'
Die New York-pakhuisbestuurder kan dieselfde gestoor prosedure gebruik om toegang tot die gebied se voorraad te verkry:
UITVOER sp_GetInventory 'NY'
Toegestaan, dit is 'n eenvoudige voorbeeld, maar die voordele van abstraksie kan hier gesien word. Die pakhuisbestuurder hoef nie SQL of die innerlike werking van die prosedure te verstaan nie. Uit 'n prestasieperspektief werk die gestoor prosedure wonders. Die SQL Server skep een uitvoeringsplan een keer en herutileer dit deur die toepaslike parameters op die uitvoeringstyd in te voer.
Noudat jy die voordele van gestoorde prosedures geleer het, kom daar uit en gebruik dit.
Probeer 'n paar voorbeelde en meet die prestasieverbeterings wat jy behaal het - jy sal verbaas wees!
Voorraad tabel
ID | produk | Warehouse | hoeveelheid |
142 | Groenbone | NY | 100 |
214 | Ertjies | FL | 200 |
825 | koring | NY | 140 |
512 | bone | NY | 180 |
491 | tamaties | FL | 80 |
379 | waatlemoen | FL | 85 |