SQL Serveri salvestatud protseduurid

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:

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