Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
-
Sie verfügen über eine Tabelle mit gruppierten columnstore-Indizes, und die Tabelle enthält viele Spalten (in Hunderten).
-
Bei den Daten (dem Datentyp) dieser Spalten handelt es sich um stark komprimierbare Daten wie varchar.
-
Sie führen eine Select -Anweisung für diese Tabelle aus, um eine große Teilmenge oder alle Spalten aus dieser Tabelle auszuwählen.
-
Ihre Select -Anweisung weist eine Where -Klausel auf, die die Ausgabe der Datei auf sehr wenige Zeilen beschränkt (die Abfrage ist äußerst selektiv).
In diesem Szenario können alle oder alle folgenden Symptome auftreten:
-
Die gleichzeitige Arbeitsauslastung (andere Abfragen, die zur gleichen Zeit auf dem Server ausgeführt werden, wie diese Abfrage), kann zu einer Verringerung der Leistung und zum Verlust des Datendurchsatz führen.
-
Möglicherweise wird eine zeitweise höhere CPU-Auslastung angezeigt.
-
Wenn Sie sys.dm_os_ring_buffers -und SchedulerMonitor -Typ-Einträge Abfragen, finden Sie Unterbrechungen, die während der Ausführung dieser Abfrage protokolliert werden.
-
Möglicherweise erhalten Sie im Fehlerprotokoll einen Fehler beim Scheduler, und es wird möglicherweise eine Symptom Speicherabbilddatei generiert.
Lösung
Das Problem wurde zuerst im folgenden kumulativen Update von SQL Server behoben:
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsupdates, die im vorherigen kumulativen Update enthalten waren. Wir empfehlen, die neuesten kumulativen Updates für SQL Server herunterzuladen und zu installieren:
Weitere Informationen
Details behebenDie Worker, die die spaltensegmente verarbeiten (Dekomprimieren und für qualifizierende Zeilen durchsuchen), werden verwendet, um die CPU-Auslastung für andere Arbeitskräfte/gleichzeitige Abfrageausführungen zu "erbringen", wenn eine bestimmte Schwellenwert Anzahl von Zeilen ausgegeben wurde. Wenn die Where -Klausel sehr selektiv war, um wenige Zeilen zu produzieren, haben die Worker, die diese Abfrage verarbeitet haben, eine dekomprimierte und eine große Anzahl von Segmenten verarbeitet (weil nur sehr wenige Zeilen qualifizieren), bevor Sie die CPU in kooperativer Weise aufgeben, damit andere Mitarbeiter ihre Arbeitsauslastung verarbeiten können. Dies führte zu einer unregelmäßigen CPU-Auslastung und zu einem Durchsatz Abbau für gleichzeitige Arbeitslasten. Der Fix optimiert und verbessert den CPU-Freigabe Algorithmus für solche columnstore-Abfragen.
Informationsquellen
Erfahren Sie mehr über die Terminologie , mit der Microsoft Softwareupdates beschreibt.