|
|
Δημοσιεύτηκε στις 21/5/2018 1:55:48 μ.μ.
|
|
|

Τις τελευταίες δύο ημέρες, αντιμετώπισα ένα πρόβλημα που είναι αρκετά απογοητευτικό, εκτελείται μια αποθηκευμένη διαδικασία περίπου 120 γραμμών στον αναλυτή ερωτημάτων του SQL Server 2012, Η ταχύτητα είναι πολύ ιδανική και περίπου 500 εγγραφές δεδομένων μπορούν να φιλτραριστούν και να καταγραφούν σε λιγότερο από 1 δευτερόλεπτο. Ωστόσο, όταν καλείται στον κώδικα προγράμματος C#, ζητείται το χρονικό όριο σύνδεσης. Ρυθμίστε το CommandTimeout σε 300 και θα χρειαστούν περίπου 3 λεπτά για να εμφανιστεί. Έλεγξα τον κωδικό αρκετές φορές και δεν βρήκα σφάλματα. Το πρόβλημα παραμένει.
Ανάλυση αιτίας: 1. Επειδή η ταχύτητα εκτέλεσης στον αναλυτή ερωτημάτων είναι γρήγορη και ο όγκος των δεδομένων δεν είναι μεγάλος. 2. Μόνο η κλήση στο πρόγραμμα είναι αργή. 3. Ρυθμίστε την παράμετρο CommandTimeout και το αποτέλεσμα μπορεί να εμφανιστεί, αλλά θα χρειαστεί πολύς χρόνος.
Συνοπτικά, συνάγεται προκαταρκτικά το συμπέρασμα ότι το πρόβλημα έγκειται στον κωδικό C#. Αλλά δεν υπήρξε κέρδος μετά την επιθεώρηση.
Ελέγξτε αυτές τις πληροφορίες στο Baidu. Τελικά βρήκα μια παρόμοια ενημερωτική ανάρτηση στο φόρουμ CSDN. Ένας από τους χρήστες του Διαδικτύου είπε στην απάντηση: «Είναι πιθανό το σχέδιο εφαρμογής να έχει λήξει», Πραγματικά με ξύπνησε στο όνειρό μου.
Εκτελέστε αμέσως στην ανάλυση ερωτημάτων:
Δοκιμάζοντας ξανά το πρόγραμμα, αυτή τη φορά τελικά λειτούργησε. Η ταχύτητα είναι πολύ ικανοποιητική.
Ανάλυση αιτίας: Δεδομένου ότι οι αποθηκευμένες διαδικασίες είναι προμεταγλωττισμένες, δημιουργείται ένα σχέδιο εκτέλεσης κατά την πρώτη εκτέλεση και αυτό το σχέδιο εκτέλεσης χρησιμοποιείται σε επόμενες εκτελέσεις (εκτός εάν η αποθηκευμένη διαδικασία έχει καθοριστεί για εκ νέου μεταγλώττιση), αντί να δημιουργείται ένα σχέδιο εκτέλεσης κάθε φορά που εκτελείται. Όταν η δομή του αντικειμένου που εμπλέκεται στην αποθηκευμένη διαδικασία προσαρμόζεται ή τα σχετικά δεδομένα αλλάζουν σημαντικά, γεγονός που μπορεί να προκαλέσει το αρχικό σχέδιο να είναι ακατάλληλο για την τρέχουσα κατάσταση (λήξη σχεδίου εκτέλεσης), η αποθηκευμένη διαδικασία θα πρέπει να μεταγλωττιστεί εκ νέου.
Τέλος, επισυνάψτε τον κωδικό για την αποθηκευμένη διαδικασία:
|
Προηγούμενος:Μοιραστείτε μια ενιαία πηγή κωδικού σελίδας προσφοράς APP, προσαρμοστική, πολύ όμορφη και γενναιόδωρη!Επόμενος:Πλαίσιο ανοιχτού κώδικα C# (Ανατύπωση)
|