Prozedura gordetuak Eraginkortasun Handikoa eta Segurtasun Abantailak bidaltzea
Microsoft SQL Server-ek biltegiratutako prozedura mekanismoa eskaintzen du datu-basearen garapen-prozesua errazteko, Transact-SQL adierazpenak blokeak kudeatzeko. Berreskuratutako prozedurak SQL Server-eko garatzaile gehienak hautematen dituzte, denbora aurrezteko inbertsioak merezi dituzten eraginkortasun eta segurtasuneko onurak biltzen dituena.
Gordetako prozedurak erabiltzearen abantailak
Zergatik garatzaileek biltegiratutako prozedurak behar dituzte?
Hona hemen teknologia honen funtsezko onurak:
- Aurre-konpilatutako exekuzioa: SQL Server-k behin biltegiratutako prozedura biltzen du behin eta berriro exekuzio-plana berriro erabiltzeko. Errendimendu handiko bultzada lortzen du biltegiratze prozeduretan hainbat aldiz deitzen direnean.
- Bezero / zerbitzariaren trafiko murriztua: sarearen banda zabalera zure ingurunean kezkagarria baldin bada, biltegiratze prozedurak SQL kontsultak luzeak alanbrean transmititzen dituen lerro bakar bat murriztuko duela jakingo duzu.
- Kodearen eta programazio abstrakzioaren berrerabilpen eraginkorra: erabiltzaileek eta bezero-programek erabilitako prozedurak gorde daitezke. Aurreikusitako planak garatzen badituzu, garapenaren zikloak denbora gutxiago hartzen du.
- Segurtasun kontroleko hobekuntzak: erabiltzaileen baimena eman dezakezu biltegiratze prozedura exekutatzeko, azpiko mahaiaren baimenei modu independentean.
Garatutako prozedurak erabiltzaileek definitutako funtzioen antzekoak dira, baina ezberdintasun nabarmenak daude.
egitura
Garatutako prozedurak beste programazio hizkuntzatan ikusi diren eraikuntzen antzekoak dira.
Datuak onartzen dituzte exekuzioan zehaztutako sarrerako parametroen eran. Sarrera parametro hauek (inplementatuak badira) emaitza batzuk sortzen dituzten adierazpen multzo baten exekuzioa erabiltzen da. Emaitza hori deien ingurunera itzultzen da erregistro-multzo baten, irteerako parametroen eta itzultze-kode baten bidez.
Hori mingotsa bezalakoa izan daiteke, baina biltegiratutako prozedurak nahiko sinpleak dira.
Adibidea
Orrialde honen beheko aldean agertzen den inbentarioa duen adibide praktiko bat aztertuko dugu. Informazio hori eguneratzen da denbora errealean, eta biltegi kudeatzaileek beren biltegian gordetako produktuen maila kontrolatzen dute eta bidalketarako eskuragarri daude. Iraganean, kudeatzaile bakoitzak hurrengoen antzekoak exekutatuko ditu:
Aukeratu produktua, Kopurua
Inbentarioa FROM
Non Warehouse = 'FL'
Honek ez du funtzionamendu eraginkorra SQL Server-en. Biltegi kudeatzaileak kontsultarako exekutatzen den bakoitzean, datu-basearen zerbitzariak kontsulta berregin behar du eta exekutatu hutsetik. Gainera, biltegi kudeatzaileak SQL ezagutzera eman behar du eta baimen egokiak mahaiaren informazioan sartzeko.
Horren ordez, prozesua erraztu daiteke biltegiratutako prozedura baten bidez. Hona hemen sp_GetInventory izeneko prozedura baten kodea, emandako biltegi bateko inbentario-maila berreskuratzen duena.
SORTU PROZEDURA sp_GetInventory
@location varchar (10)
AS
Aukeratu produktua, Kopurua
Inbentarioa FROM
Nondik Warehouse = @ kokalekua
Florida biltegi kudeatzaileak ondoren inbentarioa mailara sartzeko komandoa igortzen du:
EXECUTE sp_GetInventory 'FL'
New Yorkeko biltegi kudeatzaileak biltegiratutako prozedura bera erabil dezake eremu horretan inbentarioa sartzeko:
EXECUTE sp_GetInventory 'NY'
Benetan, adibide sinplea da, baina abstrakzioaren abantailak hemen ikus daitezke. Biltegi kudeatzaileak ez du SQL edo prozedurak barne funtzionamendua ulertu behar. Errendimenduaren ikuspegitik, biltegiratutako prozedurak mirariak egiten ditu. SQL Server-ek exekuzio-plan bat sortzen du behin eta berriro, exekuzio-denbora parametro egokiarekin konektatuz.
Orain biltegiratutako prozeduren onurak ikasi dituzula, atera eta erabili itzazu.
Saiatu zenbait adibiderekin eta lortu hobekuntza-neurriak neurtu, harritu egingo zara!
Inbentario taulan
NAN | Produktuen | biltegia | Kopurua |
142 | Babarrunak | NY | 100 |
214 | Peas | FL | 200 |
825 | arto | NY | 140 |
512 | Lima babarrunak | NY | 180 |
491 | Tomatoes | FL | 80 |
379 | sandia | FL | 85 |