Αποθηκευμένες διαδικασίες SQL Server

Οι αποθηκευμένες διαδικασίες προσφέρουν υψηλή απόδοση και πλεονεκτήματα ασφάλειας

Ο Microsoft SQL Server παρέχει τον μηχανισμό της αποθηκευμένης διαδικασίας για την απλοποίηση της διαδικασίας ανάπτυξης της βάσης δεδομένων, ομαδοποιώντας τις δηλώσεις Transact-SQL σε διαχειρίσιμα μπλοκ. Οι αποθηκευμένες διαδικασίες εκτιμώνται από τους περισσότερους προγραμματιστές του SQL Server, οι οποίοι βρίσκουν τα οφέλη απόδοσης και ασφάλειας που αποκομίζουν, αξίζει τον κόπο να επενδύσουν εγκαίρως εγκαίρως.

Οφέλη από τη χρήση αποθηκευμένων διαδικασιών

Γιατί ένας προγραμματιστής πρέπει να χρησιμοποιεί αποθηκευμένες διαδικασίες;

Εδώ είναι τα βασικά πλεονεκτήματα αυτής της τεχνολογίας:

Οι αποθηκευμένες διαδικασίες είναι παρόμοιες με τις λειτουργίες που ορίζονται από το χρήστη, αλλά υπάρχουν και λεπτές διαφορές.

Δομή

Οι αποθηκευμένες διαδικασίες είναι παρόμοιες με τις κατασκευές που εμφανίζονται σε άλλες γλώσσες προγραμματισμού.

Αποδέχονται δεδομένα με τη μορφή παραμέτρων εισόδου που καθορίζονται κατά την εκτέλεση του χρόνου. Αυτές οι παράμετροι εισόδου (αν εφαρμόζονται) χρησιμοποιούνται στην εκτέλεση μιας σειράς δηλώσεων που παράγουν κάποιο αποτέλεσμα. Αυτό το αποτέλεσμα επιστρέφεται στο περιβάλλον κλήσης μέσω της χρήσης μιας σειράς εγγραφών, παραμέτρων εξόδου και ενός κωδικού επιστροφής.

Αυτό μπορεί να ακούγεται σαν μπουκιά, αλλά θα διαπιστώσετε ότι οι αποθηκευμένες διαδικασίες είναι στην πραγματικότητα αρκετά απλές.

Παράδειγμα

Ας ρίξουμε μια ματιά σε ένα πρακτικό παράδειγμα που σχετίζεται με τον πίνακα που ονομάζεται απογραφή που εμφανίζεται στο κάτω μέρος αυτής της σελίδας. Αυτές οι πληροφορίες ενημερώνονται σε πραγματικό χρόνο και οι διαχειριστές αποθήκης ελέγχουν συνεχώς τα επίπεδα των προϊόντων που είναι αποθηκευμένα στην αποθήκη τους και είναι διαθέσιμα για αποστολή. Στο παρελθόν, κάθε διαχειριστής θα τρέχει ερωτήματα παρόμοια με τα ακόλουθα:

SELECT Προϊόν, Ποσότητα
ΑΠΟ την απογραφή
WHERE Αποθήκη = 'FL'

Αυτό οδήγησε σε αναποτελεσματική απόδοση στον SQL Server. Κάθε φορά που ένας διαχειριστής αποθήκης εκτελέσει το ερώτημα, ο διακομιστής βάσης δεδομένων αναγκάστηκε να επανασυνθέσει το ερώτημα και να το εκτελέσει από την αρχή. Απαιτεί επίσης ο διαχειριστής αποθήκης να έχει γνώση της SQL και κατάλληλα δικαιώματα πρόσβασης στις πληροφορίες πίνακα.

Αντ 'αυτού, η διαδικασία μπορεί να απλοποιηθεί μέσω της χρήσης μιας αποθηκευμένης διαδικασίας. Εδώ είναι ο κώδικας για μια διαδικασία που ονομάζεται sp_GetInventory που ανακτά τα επίπεδα αποθέματος για μια δεδομένη αποθήκη.

Δημιουργία διαδικασίας sp_GetInventory
@location varchar (10)
ΟΠΩΣ ΚΑΙ
SELECT Προϊόν, Ποσότητα
ΑΠΟ την απογραφή
WHERE Αποθήκη = @ θέση

Στη συνέχεια, ο διαχειριστής αποθήκης της Φλόριντα μπορεί να έχει πρόσβαση στα επίπεδα αποθεμάτων εκδίδοντας την εντολή:

EXECUTE sp_GetInventory 'FL'

Ο διαχειριστής αποθήκης της Νέας Υόρκης μπορεί να χρησιμοποιήσει την ίδια αποθηκευμένη διαδικασία για να αποκτήσει πρόσβαση στο απόθεμα της περιοχής αυτής:

EXECUTE sp_GetInventory 'NY'

Χορηγηθεί, αυτό είναι ένα απλό παράδειγμα, αλλά τα οφέλη της αφαίρεσης μπορούν να φανούν εδώ. Ο διαχειριστής αποθήκης δεν χρειάζεται να κατανοεί την SQL ή την εσωτερική λειτουργία της διαδικασίας. Από τη σκοπιά της απόδοσης, η αποθηκευμένη διαδικασία αναρωτιέται. Ο SQL Server δημιουργεί ένα σχέδιο εκτέλεσης μία φορά και στη συνέχεια επαναχρησιμοποιείται συνδέοντας τις κατάλληλες παραμέτρους κατά την εκτέλεση του χρόνου.

Τώρα που έχετε μάθει τα πλεονεκτήματα των αποθηκευμένων διαδικασιών, βγείτε εκεί και χρησιμοποιήστε τα.

Δοκιμάστε μερικά παραδείγματα και μετρήστε τις βελτιώσεις απόδοσης που επιτεύχθηκαν - θα εκπλαγείτε!

Πίνακας Αποθέματος

ταυτότητα Προϊόν Αποθήκη Ποσότητα
142 Φασολάκια NY 100
214 Αρακάς FL 200
825 Καλαμπόκι NY 140
512 Λάμα φασόλια NY 180
491 Ντομάτες FL 80
379 Καρπούζι FL 85