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

Άποψη: 22757|Απάντηση: 0

[Πηγή] Επιλύει το πρόβλημα ότι οι αποθηκευμένες διαδικασίες εκτελούνται γρήγορα, αλλά οι κλήσεις προγραμμάτων είναι αργές

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 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# (Ανατύπωση)
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com