Stokitaj Procedoj Elsendas Alta Efikeco kaj Sekurecaj Utiloj
Microsoft SQLa Servilo provizas la konservitan proceduron-mekanismon por simpligi la datuman disvolviĝon-procezon grupigante Transakt-SQL-deklarojn en manipuleblajn blokojn. Storitaj proceduroj estas estimataj de la plej multaj programistoj de SQL-serviloj, kiuj trovas la efikecon kaj sekurecajn profitojn, kiujn ili rikoltas, bone valoras la antaŭan investon en tempo.
Profitoj de Uzado de Stokitaj Procedoj
Kial devus programisto uzi stokitajn procedurojn?
Jen la ŝlosiloj de ĉi tiu teknologio:
- Prekompila ekzekuto: SQL-Server kompilas ĉiun administradan proceduron unufoje kaj poste reutiligas la ekzekutan planon. Ĉi tio rezultigas teruran agadon pliigante kiam stokitaj proceduroj estas nomataj ree.
- Redaktita kliento / servila trafiko: Se reto de larĝa bando estas koncerno en via medio, vi estos feliĉa lerni, ke stokitaj proceduroj povas redukti longajn SQL-demandojn al unu linio, kiu estas transdonita tra la drato.
- Efika reuzo de kodo kaj programado abstraktaĵo: Stokitaj proceduroj povas esti uzataj de multaj uzantoj kaj klientaj programoj. Se vi uzos ilin planite, vi trovos, ke la ciklo de disvolviĝo malpli temas.
- Pli bonaj sekurecaj kontroloj: Vi povas doni al uzantoj permeso ekzekuti stokatan proceduron sendepende de suba tablo-permesoj.
Storitaj proceduroj estas similaj al uzitaj difinitaj funkcioj, sed estas subtilaj diferencoj.
Strukturo
Storitaj proceduroj estas similaj al la konstruaĵoj viditaj en aliaj programlingvoj.
Ili akceptas datumojn en la formo de enmetaj parametroj, kiuj estas specifitaj ĉe tempo de ekzekuto. Ĉi tiuj enmetaj parametroj (se implementitaj) estas uzataj en la ekzekuto de serio de deklaroj kiuj produktas iujn rezultojn. Ĉi tiu rezulto estas redonita al la vokata medio per la uzo de dosieroj, elimetraj parametroj kaj redono.
Tio povas soni kiel buŝo, sed vi trovos, ke stokitaj proceduroj estas vere simplaj.
Ekzemplo
Ni rigardu praktikan ekzemplon rilatitan al la tablo nomata inventaro montrita ĉe la malsupro de ĉi tiu paĝo. Ĉi tiu informo ĝisdatiĝas en reala tempo, kaj magazenistoj konstante kontrolas la nivelojn de produktoj stokitaj en sia magazeno kaj disponeblaj por sendo. En la pasinteco, ĉiu administranto kuros similajn demandojn al la sekvaj:
Elektu Produkton, Kvanto
De Inventaro
WHERE Warehouse = 'FL'
Ĉi tio rezultigis inefican efikecon ĉe la SQL-servilo. Ĉiufoje kiam komercisto administris la konsulton, la datumbaza servilo devigis repagi la konsulton kaj ekzekuti ĝin de nulo. Ĝi ankaŭ postulis la magazeniston havi scion pri SQL kaj taŭgaj permesoj por aliri la tablon-informon.
Anstataŭe, la procezo povas esti simpligita per la uzo de konservita proceduro. Jen la kodo por procedo nomita sp_GetInventory, kiu retrovas la inventajn nivelojn por donita magazeno.
KREU PROCEDURO sp_GetInventory
@location varchar (10)
AS
Elektu Produkton, Kvanto
De Inventaro
Kie Warehouse = @location
La komercisto de la magazeno de Florido povas tiam aliri nivelojn de inventaro per elsendo de la komando:
EXECUTE sp_GetInventory 'FL'
La komercisto de Nov-Jorko povas uzi la saman stokatan proceduron por aliri la inventaron de tiu areo:
Ekskluzive sp_GetInventory 'NY'
Donita, ĉi tio estas simpla ekzemplo, sed la avantaĝoj de abstraktaĵo povas vidi ĉi tie. La magazeno ne bezonas kompreni SQL aŭ la internajn laborojn de la proceduro. De rendimento, la stokata proceduro faras mirindaĵojn. La SQL-servilo kreas ekzekutan planon unufoje kaj poste reutiligas ĝin per alkroĉado en la taŭgaj parametroj ĉe tempo de ekzekuto.
Nun, ke vi lernis la profitojn de stokitaj proceduroj, eliru kaj uzu ilin.
Provu kelkajn ekzemplojn kaj mezuru la efikecajn pliboniĝojn atingitajn - vi estos mirigitaj!
Inventaro Tablo
ID | Produkto | Magazeno | Kvanto |
142 | Verdaj fazeoloj | NY | 100 |
214 | Pizoj | FL | 200 |
825 | Maizo | NY | 140 |
512 | Fajlofaj faboj | NY | 180 |
491 | Tomatoj | FL | 80 |
379 | Akvomelono | FL | 85 |