Συμπτώματα
Στο Microsoft SQL Server 2016 ή το SQL Server 2017 στα Windows, ενδέχεται να αντιμετωπίσετε μειωμένες επιδόσεις υπό τις ακόλουθες συνθήκες:
- Όταν εκτελείτε πολλές ταυτόχρονες λειτουργίες INSERTSELECT σε προσωρινούς πίνακες.
- Όταν υποβάλλετε ερώτημα sys.dm_os_waiting_tasks. Σε αυτήν την περίπτωση, η στήλη resource_description εμφανίζει αναμονή σε σελίδες ελεύθερου χώρου σελίδας (PFS) για πολλές αιτήσεις.
Αιτία
Ο παραλληλισμός INSERT για τις λειτουργίες INSERTSELECT παρουσιάστηκε το SQL Server 2016 ή το SQL Server 2017 στα Windows. Τα INSERT σε τοπικούς προσωρινούς πίνακες (μόνο αυτοί που προσδιορίζονται από το πρόθεμα # και όχι καθολικοί προσωρινοί πίνακες που προσδιορίζονται από ## προθήματα) ενεργοποιούνται πλέον αυτόματα για παραλληλισμό χωρίς να χρειάζεται να ορίσετε την υπόδειξη TABLOCK που απαιτούν οι μη προσωρινοί πίνακες.
Παρόλο που ο παραλληλισμός INSERT συνήθως βελτιώνει τις επιδόσεις των ερωτημάτων, εάν υπάρχει σημαντικός αριθμός ταυτόχρονων λειτουργιών προσωρινής επιλογής πίνακα INSERTSELECT, η διένεξη μπορεί να είναι σημαντική σε σχέση με τις σελίδες PFS. Σε ορισμένες περιπτώσεις, αυτό μπορεί να προκαλέσει συνολική μείωση της απόδοσης.
Επίλυση
Αυτό το πρόβλημα διορθώθηκε αρχικά στο SQL Server 2016 Service Pack 1. Αφού εφαρμόσετε SQL Server 2016 SP1, τα παράλληλα ένθετα στην πρόταση INSERT.. Η επιλογή σε τοπικούς προσωρινούς πίνακες είναι απενεργοποιημένη από προεπιλογή, γεγονός που μειώνει τη διένεξη στη σελίδα PFS και βελτιώνει τη συνολική απόδοση για ταυτόχρονο φόρτο εργασίας. Εάν επιθυμείτε παράλληλα INSERTs σε τοπικούς προσωρινούς πίνακες, οι χρήστες θα πρέπει να χρησιμοποιούν την υπόδειξη TABLOCK κατά την εισαγωγή σε τοπικό προσωρινό πίνακα.
Εάν έχετε ενεργοποιήσει τη σημαία παρακολούθησης 9495 που αναφέρεται στην ενότητα λύσης, συνιστάται να απενεργοποιήσετε και να καταργήσετε τη σημαία παρακολούθησης μετά την εφαρμογή του SQL Server 2016 SP1, καθώς η σημαία παρακολούθησης 9495 απενεργοποιεί την παράλληλη εισαγωγή ανεξάρτητα από την υπόδειξη TABLOCK.
Πληροφορίες αθροιστικής ενημέρωσης
Αυτό το πρόβλημα διορθώθηκε στην ακόλουθη αθροιστική ενημερωμένη έκδοση για το SQL Server 2016:
Πληροφορίες σχετικά με τις αθροιστικές ενημερώσεις για SQL Server