Salvestatud protseduurid tagavad suure tõhususega ja turvalisusega seotud eelised
Microsoft SQL Server pakub salvestatud protseduurimehhanismi, et lihtsustada andmebaasi arendamise protsessi, rühmitades Transact-SQL avaldused juhitavateks plokkideks. Haldustoiminguid hindavad enamus SQL Serveri arendajaid, kes leiavad, et nende tõhusus ja turvalisus on kasulik, on aegset investeeringut väärt väärtustada.
Hooldatud protseduuride kasutamise eelised
Miks peaks arendaja kasutama salvestatud protseduure?
Siin on selle tehnoloogia peamised eelised:
- Eelkonditsioneeritud täitmine: SQL Server koostab iga salvestatud protseduuri korra ja taaskäivitab täitmisplaani. Selle tulemuseks on tohutu jõudluse suurendamine, kui salvestatud protseduure kutsutakse korduvalt.
- Vähendatud kliendi / serveri liiklus. Kui teie keskkonnas on probleemiks võrgu ribalaius, siis te võite õnneks teada, et salvestatud protseduurid võivad pikkade SQL-päringute arvu vähendada ühele reale, mis edastatakse traadi kaudu.
- Koodi ja programmeerimise abstraktsiooni tõhus kasutamine: salvestatud protseduure saavad kasutada mitmed kasutajad ja kliendiprogrammid. Kui kasutate neid plaanipäraselt, leiate arendustsüklit vähem aega.
- Tõhustatud turvameetmed: saate lubada kasutajatel salvestatud protseduuri käivitamiseks sõltumata aluseks olevatest tabelite lubadest.
Salvestatud protseduurid on sarnased kasutaja määratletud funktsioonidega, kuid on peent erinevusi.
Struktuur
Salvestatud protseduurid sarnanevad teistes programmeerimiskeeltes leiduva konstruktsiooniga.
Nad aktsepteerivad andmeid sisestamise parameetrite kujul, mis on määratud täitmise ajal. Neid sisendparameetreid (kui neid on rakendatud) kasutatakse teatud tulemuste genereerivate avalduste seerias. See tulemus tagastatakse kõnekeskkonnale, kasutades dokumendikomplekti, väljundparameetreid ja tagasitunnuskoodi.
See võib tunduda kõvasti, kuid leiad, et salvestatud protseduurid on tegelikult üsna lihtsad.
Näide
Vaatame praktilisi näiteid, mis on seotud selle lehe allservas oleva tabeliga, mille nimeks on inventuur. Seda teavet ajakohastatakse reaalajas ja laohaldajad kontrollivad pidevalt nende laos ladustatud toodete taset, mis on saadaval saadetiste jaoks. Varem käitasid kõik haldurid järgmiseid ülesandeid sarnaseid päringuid:
SELECT Toode, Kogus
INVESTEERINGUTEST
KUS Warehouse = 'FL'
Selle tulemuseks oli SQL Serveri ebaefektiivne jõudlus. Iga kord, kui laohaldur täitis päringut, oli andmebaaside server kohustatud päring uuesti kokku kompileerima ja seda nullist välja viima. See nõudis ka laohalduril, et tal oleks teavet tabeli teabe saamiseks SQL-i ja asjakohaste õiguste kohta.
Selle asemel saab seda protsessi lihtsustada salvestatud protseduuri abil. Siin on protseduuri kood, mida nimetatakse sp_GetInventory, mis otsib konkreetse lao varude taset.
CREATE PROCEDURE sp_GetInventory
@location varchar (10)
AS
SELECT Toode, Kogus
INVESTEERINGUTEST
KUS WAREHOUSE = @ paigutus
Florida laduhaldur saab seejärel juurdepääsu inventari tasemele, andes käskluse:
EXECUTE sp_GetInventory 'FL'
New Yorgi laohaldur võib kasutada sama salvestatud protseduuri, et pääseda sellele ala varudele:
EXECUTE sp_GetInventory "NY"
Toetudes on see lihtne näide, kuid abstraktsiooni eeliseid on näha siin. Laohaldus ei pea silmas SQL-i ega protseduuri sisemist tööd. Tulemuslikkuse vaatevinklist toimib salvestatud protseduur imet. SQL Server loob täitmisplaani korraga ja taaskasutab seda, täites täitmise ajal sobivaid parameetreid.
Nüüd, kui olete õppinud salvestatud protseduuride eeliseid, tule seal välja ja kasutage neid.
Proovige mõnda näidet ja hinnake saavutatud jõudluse parandusi - olge üllatunud!
Inventari tabel
ID | Toode | Ladu | Kogus |
142 | Rohelised oad | NY | 100 |
214 | Herned | FL | 200 |
825 | Corn | NY | 140 |
512 | Lima oad | NY | 180 |
491 | Tomatid | FL | 80 |
379 | Arbuus | FL | 85 |