Συμπτώματα
Όταν υπάρχουν πάρα πολλά ταυτόχρονα ένθετα στην ίδια λίστα κατακερματισμού ή το ad hoc cache του προγράμματος SQL Server φθάνει στο όριο καταχώρησης του 160.036, παρουσιάζεται σοβαρός ισχυρισμός SOS_CACHESTORE κλειδώματος. Σε αυτήν την περίπτωση, παρουσιάζεται μια υψηλή χρήση της CPU στον Microsoft SQL Server.
Αιτία
Το πρόβλημα παρουσιάζεται όταν το cache του προγράμματος SQL Server φθάσει στο όριο καταχώρησης και τα προγράμματα που έχουν χαμηλό κόστος πρέπει να εκδιώκονται με σκοπό την εισαγωγή νέων προγραμμάτων. Αυτό προκαλεί μεγάλη διένεξη για το SOS_CACHESTORE κλειδώματος που παρέχει συγχρονισμό για τους κάδους πίνακα κατακερματισμού του χώρου προσωρινής αποθήκευσης του προγράμματος SQL Server.
Επίλυση
Πληροφορίες αθροιστικής ενημέρωσης
Το πρόβλημα διορθώθηκε για πρώτη φορά με την ακόλουθη αθροιστική ενημέρωση του SQL Server.
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Περισσότερες πληροφορίες
Το cache του προγράμματος έχει δύο όρια: το συνολικό μέγεθος και τον συνολικό αριθμό όλων των προγραμμάτων. Τα όρια καταμέτρησης μεγέθους και καταχώρησης εξηγούνται στην παρακάτω Λευκή Βίβλο:
Σχεδιασμός Εσωτερικών Εσωτερικών μνημών
Ο μέγιστος αριθμός καταχωρήσεων που μπορεί να κρατήσει ένα cache προγράμματος είναι τέσσερις φορές το πλήθος των κάδων. Μπορείτε να επαληθεύσετε αυτές τις πληροφορίες εκτελώντας τα παρακάτω ερωτήματα:
select name, type, buckets_count
from sys.dm_os_memory_cache_hash_tables
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
select name, type, pages_kb, entries_count
from sys.dm_os_memory_cache_counters
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
Για παράδειγμα, σε συστήματα 64-bit, ο αριθμός των κάδων για το cache του προγράμματος SQL Server είναι 40.009. Επομένως, ο μέγιστος αριθμός καταχωρήσεων που μπορούν να χωρέσουν μέσα στο cache του προγράμματος SQL Server είναι 160.036.
Εάν έχετε ένα φόρτο εργασίας που χρησιμοποιεί διαφορετικά ad hoc ερωτήματα, αυτό το όριο μπορεί να αποτελέσει σημείο συμφόρησης. Η αλλαγή που γίνεται από αυτήν την επείγουσα επιδιόρθωση αντιμετωπίζει αυτή την κατάσταση. Μετά την εγκατάσταση αυτής της επείγουσας επιδιόρθωσης και την ενεργοποίηση της αλλαγής, χρησιμοποιώντας τη σημαία ανίχνευσης εκκίνησης "-T 174," η καταμέτρηση του κάδου αυξάνεται σε 160.001 σε συστήματα 64-bit. Το cache του προγράμματος είναι στη συνέχεια σε θέση να κρατήσει το μέγιστο των 640.004 σχεδίων.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".