Skip to main content

Δημιουργία αποθηκευμένων διαδικασιών για τον SQL Server σας

Real Status How To #4 - Αποθηκευμένες αναζητήσεις (Ενδέχεται 2024)

Real Status How To #4 - Αποθηκευμένες αναζητήσεις (Ενδέχεται 2024)
Anonim

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

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

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

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

  • Προκατασκευασμένη εκτέλεση: Ο SQL Server μεταγλωττίζει κάθε αποθηκευμένη διαδικασία μία φορά και στη συνέχεια επαναχρησιμοποιεί το σχέδιο εκτέλεσης. Αυτό έχει ως αποτέλεσμα την τεράστια αύξηση της απόδοσης όταν οι αποθηκευμένες διαδικασίες καλούνται επανειλημμένα.
  • Μειωμένη επισκεψιμότητα πελάτη / διακομιστή: Εάν το εύρος ζώνης δικτύου είναι ανησυχητικό για το περιβάλλον σας, θα χαρούμε να μάθετε ότι οι αποθηκευμένες διαδικασίες μπορούν να μειώσουν τα μεγάλα ερωτήματα SQL σε μια μόνο γραμμή που μεταδίδεται μέσω του καλωδίου.
  • Αποτελεσματική επαναχρησιμοποίηση κώδικα και αφαίρεση προγραμματισμού: Οι αποθηκευμένες διαδικασίες μπορούν να χρησιμοποιηθούν από πολλούς χρήστες και προγράμματα-πελάτες. Εάν τα χρησιμοποιήσετε με έναν προγραμματισμένο τρόπο, θα βρείτε τον κύκλο ανάπτυξης απαιτεί λιγότερο χρόνο.
  • Ενισχυμένοι έλεγχοι ασφαλείας: Μπορείτε να δώσετε στους χρήστες την άδεια να εκτελέσουν μια αποθηκευμένη διαδικασία ανεξάρτητα από τα υποκείμενα δικαιώματα πίνακα.

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

Δομή

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

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

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

Παράδειγμα

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

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ΦασολάκιαNY100
214ΑρακάςFL200
825ΚαλαμπόκιNY140
512Λάμα φασόλιαNY180
491ΝτομάτεςFL80
379ΚαρπούζιFL85