KB3195888 - ΕΠΙΔΙΌΡΘΩΣΗ: Η υψηλή χρήση CPU προκαλεί ζητήματα επιδόσεων στο SQL Server 2016 και 2017

Ισχύει για
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows SQL Server 2017 on Linux

Συμπτώματα

Όταν χρησιμοποιείτε είτε μια νέα παρουσία του Microsoft SQL Server 2016 (ή 2017) είτε μια παρουσία του SQL Server 2016 (ή 2017) που έχει αναβαθμιστεί από μια παλαιότερη έκδοση του SQL Server, αντιμετωπίζετε ζητήματα επιδόσεων λόγω της υψηλής χρήσης της CPU. Επιπλέον, εάν υποβάλετε ερώτημα στον sys.dm_os_spinlock_stats πίνακα, θα παρατηρήσετε μια υψηλή τιμή στη στήλη περιστροφών για τις γραμμές SECURITY_CACHE (Cache ασφαλείας) και CMED_HASH_SET (Cache μετα-δεδομένων) (σε σύγκριση με άλλες γραμμές στον πίνακα). Για παράδειγμα, παρατηρείτε τις ακόλουθες τιμές.

Στατιστικά στοιχεία Spinlock με υψηλές τιμές SECURITY_CACHE και CMED_HASH_SET

Αιτία

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

Επίλυση

Αυτό το πρόβλημα διορθώθηκε στις ακόλουθες αθροιστικές ενημερωμένες εκδόσεις για SQL Server:

Σημείωση Αφού εφαρμόσετε SQL Server 2016 αθροιστική ενημερωμένη έκδοση 2 (CU2), τα ονόματα SECURITY_CACHE και CMED_HASH_SET αλλάζουν σε LOCK_RW_SECURITY_CACHE και LOCK_RW_CMED_HASH_SET, αντίστοιχα. Μετά την εφαρμογή της μονάδας CU2, οι τιμές εμφανίζονται ως εξής.

Στατιστικά στοιχεία Spinlock μετά την ενημέρωση με μετονομασμένες γραμμές ασφαλείας και προσωρινής μνήμης μετα-δεδομένων

Πληροφορίες σχετικά με τις αθροιστικές ενημερώσεις για SQL Server

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

Τελευταία αθροιστική ενημέρωση για το SQL Server 2017

Τελευταία αθροιστική ενημέρωση για το SQL Server 2016

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".

Παραπομπές

Ενημερωθείτε για την ορολογία που χρησιμοποιεί η Microsoft για να περιγράφει τις ενημερώσεις λογισμικού.

Η λευκή βίβλος Διάγνωση και επίλυση διένεξης Spinlock στο SQL Server συζητά λεπτομερώς ζητήματα και λύσεις που σχετίζονται με τη διαμάχη spinlock.