SQL Server zeitlichen Werte möglicherweise falsch sein, wenn Sie Dienstprogramme oder Technologien, die CPU-Frequenzen ändern verwenden

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 931279 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Microsoft SQL Server 2005 verwendet den hochauflösenden CPU-Leistungsindikator um Mikrosekunde Timing Funktionen bereitzustellen. Einer Mikrosekunde ist eine Millionstel einer Sekunde (oder ein Tausendertrennzeichen von einer Millisekunde). Jedoch SQL Server zeitlichen Werte möglicherweise falsch, wenn Sie Technologien verwenden, die CPU-Frequenzen zu ändern. Dieses Problem kann beispielsweise auftreten, wenn Sie eine der folgenden Technologien verwenden:
  • CPU-stepping
  • AMD-Cool'n ' Stiller Technologie
  • Verschiedene Energieschemas
Dieser Artikel enthält Methoden und zusätzliche Informationen zu dieses Problem umgehen können.

Problembeschreibung

Wenn Sie die SET STATISTICS TIME-Anweisung, verwenden um Server Ausführung, analysieren und Kompilierungszeiten anzuzeigen, wird möglicherweise falsche Werte erhalten. Sie möglicherweise z. B. fest, dass die verstrichene Zeit der SQL Server-Ausführungszeit viel mehr als die CPU-Zeit ist. Dieses Problem kann die Genauigkeit der Leistungsoptimierung betreffen. Dieses Problem tritt auf, wenn Sie eine der Technologien, die aufgeführt sind im Abschnitt "Zusammenfassung" auf dem Server verwenden.

Ursache

Dieses Problem tritt auf, weil CPU-Frequenzen geändert werden, bei Verwendung dieser Technologien. SQL Server 2005 verwendet den hochauflösenden CPU-Leistungsindikator um Mikrosekunde Timing Funktionen bereitzustellen. Wenn die CPU-Frequenzen sparen von Energie und verringern Wärme Ausgabe geändert werden, können die berechnete Dauer falsch sein.

Lösung

Informationen zu Service Packs

Installieren Sie das neueste Servicepack für SQL Server 2005, um dieses Problem zu beheben. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
913089Beziehen der neuesten Service Packs für SQL Server 2005
Hinweis: In SQL Server 2005 Service Pack 3 und spätere Servicepacks wird der Zeitstempel Prozessor nicht verwendet. Diese Versionen von SQL Server 2005 verwenden einen zuverlässigeren Zeitgeber, der eine maximale Genauigkeit von 1 Millisekunde verfügt.

Status

Dieses Problem wurde erstmals im SQL Server 2005 Service Pack 3.

Abhilfe

SQL Server 2005 erfordert bekannt und stabile Datenpunkte exakte Leistungsoptimierung ausführen. Wenn dynamische CPU-Frequenz Anpassungen auf dem Computer aktiviert sind, können Sie diese deaktivieren, so dass die CPUs eine stabilen Häufigkeit Rate, Verwalten bevor Sie überwachen und Optimieren der Leistung. Verwenden Sie dazu die folgenden Methoden.

Konfigurieren des Energieschemas auf dem Computer die CPUs mit maximale Frequenz bleiben erzwingen

Gehen Sie hierzu folgendermaßen vor:
  1. Klicken Sie auf Start , klicken Sie auf Ausführen , geben Sie powercfg.cpl und klicken Sie dann auf OK .
  2. Klicken Sie im Dialogfeld Eigenschaften von Energieoptionen in der Liste Energieschemas auf Dauerbetrieb .
  3. Klicken Sie auf OK .
Eine Drift auftreten. Ein Drift ist eine Abweichung zwischen den CPU-Frequenz-Werten. Weitere Informationen finden Sie im Abschnitt "Drift". In diesem Fall müssen Sie Microsoft Windows neu starten um Frequenzen alle CPUs zu synchronisieren, nachdem Sie das Energieschema geändert.

Wenn Sie den Computer neu starten nicht möglich, aktivieren Sie Prozessoraffinität verhindern, dass SQL Server-Arbeitsthreads zwischen CPUs verschoben. Wenn Sie dies tun, müssen Sie keinen Neustart des Computers selbst, wenn eine Abweichung zwischen Werten von CPU-Frequenz auftritt. Um die Prozessoraffinität für alle CPUs auf dem Server zu aktivieren, müssen Sie eine andere Maske, je nach Anzahl von logischen Prozessoren verwenden, die auf dem Server befinden.

In der folgende Tabelle sind Beispielszenarien aufgeführt.
Tabelle minimierenTabelle vergrößern
CPU-AnzahlAnweisungen, die Prozessoraffinität aktivieren
02 CPUsExec Sp_configure 'Affinity Mask', 0 x 00000003
WECHSELN
neu konfigurieren
WECHSELN
04 CPUsExec Sp_configure 'Affinity Mask', 0x0000000F
WECHSELN
neu konfigurieren
WECHSELN
08 CPUsExec Sp_configure 'Affinity Mask', 0x000000FF
WECHSELN
neu konfigurieren
WECHSELN
16 CPUsExec Sp_configure 'Affinity Mask', 0x0000FFFF
WECHSELN
neu konfigurieren
WECHSELN
32 CPUsExec Sp_configure 'Affinity Mask', 0xFFFFFFFF
WECHSELN
neu konfigurieren
WECHSELN
Hinweis: Sie möglicherweise nicht genügend CPU Häufigkeit Variation Features auf der BIOS-Ebene deaktivieren. Verschiedene Dienstprogramme von Drittanbietern können CPU-Frequenzen ändern. Einige Implementierungen aktivieren Häufigkeit Anpassungen, selbst wenn die CPUs unter maximale Energieeinstellungen Schema sind. In diesem Fall müssen Sie diese Dienstprogramme von Fremdanbietern deaktivieren, wenn Sie die Leistungsoptimierung in SQL Server 2005 ausführen.

Verwenden Sie Dienstprogramme von Drittanbietern und Treiber, um CPU-Frequenzen und CPU-Uhr Indikatoren zu synchronisieren

In seltenen Fällen erfordern ein System ein Update vom Hersteller CPU-Frequenz Probleme zu beheben. Es ist eine bewährte Methode um das System für die neuesten Microcode, BIOS und Firmware-Updates zu überprüfen, wenn Sie vermuten, dass das System möglicherweise ein Problem haben.

Weitere Informationen

Microsoft SQL Server 2000 und frühere Versionen von SQL Server verwenden Windows Timing Authentifizierungsmechanismen. Timing-Mechanismen verwenden Millisekunde Genauigkeit Werte. In der Regel diese Genauigkeit 10 bis 15 MS jedoch, die Genauigkeit ist möglicherweise so groß wie 55 ms. SQL Server-Abfragen häufig innerhalb einer einstelligen Millisekunde abgeschlossen oder Mikrosekunde Zeit umfasst. Genauigkeit erfordert einen hochauflösenden Zeitgeber. Daher ist es diese Versionen von SQL Server-Bericht die Dauer der einige Abfragen als 0 ms daher, schwer zu Leistung überwachen und Optimieren der Leistung in früheren Versionen von SQL Server.

SQL Server 2005 verbessert die Genauigkeit mithilfe des hochauflösenden CPU-Leistungsindikators Mikrosekunde Timing Funktionen bereitstellen. Wenn Sie verwenden die Technologien, die aufgeführt sind, im Abschnitt "Zusammenfassung", können die gemeldete Timing Werte falsch sein.

Dieses Problem kann die folgenden Objekte und Funktionen betreffen:
  • Ablaufverfolgungsereignisse:
    • Der Attention -Ereignis
    • Ereignisse in den Knoten gespeicherte Prozeduren
    • Ereignisse in der TSQL-Knoten
    • Ereignisse im Knoten Objekte
    • Ereignisse in den Transaktionen Knoten
  • Dynamische Verwaltungsansichten:
    • Sys. dm_exec_query_stats
    • Sys.dm_exec_requests
    • Sys.dm_exec_sessions
    • Sys.dm_io_pending_io_requests
    • Sys.dm_os_ring_buffers
    • Sys.dm_os_sys_info
    • Sys.dm_io_virtual_file_stats
    • Sys. dm_os_wait_stats
  • Die Anweisung SET STATISTICS TIME
  • Der Systemtabelle sysprocesses
Nachdem Sie SQL Server 2005 Service Pack 2 (SP2) installiert haben, protokolliert SQL Server ein Fehlermeldung im Fehlerprotokoll, wenn SQL Server erkennt, dass die Zeitgeber mit hoher Auflösung zwischen CPUs nicht synchron sind. Die Fehlermeldung bedeutet, dass Leistung Anzeigedauer möglicherweise nicht korrekt und Benutzer sollten Leistungsdaten mit Vorsicht verwenden.

Der Text der Fehlermeldung etwa eine der folgenden Fehlermeldungen angezeigt:
Fehlermeldung 1
Der CPU-Indikators Zeitstempel auf Planer Id 2 ist nicht mit anderen CPUs synchronisiert.
Fehlermeldung 2
CPU-Zeitstempel Häufigkeit wurde von 191469 in 1794177 Ticks pro Millisekunde geändert. Die neue Häufigkeit wird verwendet.
SQL Server verwendet die Echtzeit einen Zähler () RDTSC 64-Bit-CPU-Tickzähler zu erhalten. Sie können diesen Wert unterteilen, durch die CPU-Frequenz, den Wert in Millisekunden-Werte zu konvertieren. Timing Variationen können auftreten, tritt die CPU-Frequenz Änderungen oder Drift.

CPU-stepping

CPU-stepping als böswillige Änderung in CPU Häufigkeit definiert ist. CPU-stepping kann auch sein bekannt als Intel SpeedStep-Technologie oder AMD PowerNow nicht! Technologie. Wenn CPU-stepping auftritt, die CPU-Geschwindigkeit erhöhen oder verringern in Schritten so klein wie 50 MHz Energie sparen und Wärme Ausgabe verringern kann. CPUs, die innerhalb des gleichen nicht-Uniform Memory Access (NUMA) Knotens werden Häufigkeiten nicht unabhängig voneinander angepasst.

Die folgende Tabelle veranschaulicht, wie CPU-stepping Änderungen Timing Berechnungen auswirken.
Tabelle minimierenTabelle vergrößern
AktionRDTSC TicksTicks pro Millisekunde (Häufigkeit)Wand-Uhrzeit
Batch starten12000
Häufigkeit Schritt nach unten2001001ms
End-Stapel5003ms
SUMMEN5004ms
SQL Server zeichnet die RDTSC Teilstriche am Anfang und Ende RDTSC Ticks. SQL Server unterteilt dann den Ticks durch den Häufigkeitswert.

In diesem Beispiel auftreten die folgenden zeitlichen Berechnungen, wenn Sie einen Frequenz-Wert von 200 oder 100:
  • Häufigkeit 200: 500/200 = 2.5 ms
  • Häufigkeit 100: 500/100 = 5 ms
Keiner der Timing-Berechnungen entspricht die tatsächliche Wand Systemzeit von 4 ms.

Wenn diese Berechnung in verwendet wird eine RPC: abgeschlossen Trace-Ereignis, die Dauer und Endzeit Datenspalten werden nicht ordnungsgemäß gemeldet. Die RPC: abgeschlossen -Ereignis erfasst die Wand Uhr Startzeit und CPU-Anzahl der Teilstriche. Erhalten Sie höhere Auflösung Timing als Windows in SQL Server 2005, die Dauer und die Endzeit Datenspalten in einer SQL Server stellt sind Ablaufverfolgung mithilfe von verstrichene CPU-Tickzähler berechnet. Die Endzeit Spalte ist berechnet, indem die Spalte Dauer der Startzeit Spalte. In diesem Beispiel wird die Endzeit Spalte berechnet, indem fälschlicherweise 2.5 ms oder 5 ms die Startzeit.

Drift

Drift ist eine Abweichung in CPU-Uhr-Werte. Systeme mit mehreren CPUs können unterschiedliche CPU-Uhr-Werte für den gleichen Punkt rechtzeitig erzeugen. Es ist, zwar nicht häufig möglicherweise CPUs Uhr Trennung Zeit.

Im folgenden wird veranschaulicht, wie Drift Änderungen auf die Ergebnisse von der Dauer Datenspalte in einer SQL Server-Ablaufverfolgung auswirken können. In diesem Beispiel wird davon ausgegangen, dass die CPU-Frequenz auf 200 Ticks pro Millisekunde stabilen bleibt. Die folgende Tabelle veranschaulicht die Ereignisse in diesem Szenario.
Tabelle minimierenTabelle vergrößern
AktionGeplanter Windows-CPUCPU 1 RDTSCCPU 2 RDTSCWand-Uhrzeit
Batch starten110011000
End-Stapel290019004 ms
SUMMEN4 ms
SQL Server zeichnet die RDTSC Teilstriche am Anfang Punkt und die Endpunkte. SQL Server unterteilt dann RDTSC Ticks durch den Häufigkeitswert. In diesem Beispiel berechnet Windows den Arbeitsthread SQL Server auf zwei verschiedene CPUs. Der SQL Server-Arbeitsthread, der den Batch Dienste zuerst auf die erste CPU (CPU 1) ausgeführt.

Allerdings die Batchausführung wurde unterbrochen, irgendwann und SQL Server die Batchausführung an die ausstehende Warteschlange gesendet. Wenn SQL Server den SQL Server-Arbeitsthread, der diesem Stapel ausführbar Warteschlange erneut Dienste gesendet, verteilt Windows den Thread auf die zweite CPU (CPU 2) ausgeführt. Der SQL Server-Arbeitsthread auf CPU 2 ausgeführt. Aufgrund der CPU-Drift war der End Tick Wert, der von CPU 2 aufgezeichnet wurden 1900 anstelle von 900. Sie können dieses Verhalten vermeiden, wenn Sie die Prozessoraffinität aktivieren.

In diesem Beispiel werden die folgenden zeitlichen Berechnungen verwendet:
  • falsche aber gemeldete Wert: (1900 100 = 1800) / 200 = 9 ms
  • korrigieren Wert: (900 100 = 800) / 200 = 4 ms
Der Wert der Spalte Dauer für die RPC: abgeschlossen Ereignis würde als 9 ms anstelle von 4 ms dieses Ergebnis ist mehr als den richtigen Wert von 4 ms doppelklicken gemeldet werden.

Drift Warnmeldungen werden hinzugefügt, auf SQL Server 2005 an, dass die Leistung Ausgaben, die weiter oben erwähnt werden möglicherweise nicht zuverlässig. In einigen Situationen nicht abgedeckten Codeabschnitt kann SQL Server 2005 SP2 Warnmeldungen zu den folgenden Bericht:
  • False Drift Warnmeldungen
  • Drift kann Dutzende von Millisekunden ohne einen deutlichen System Effekt verursacht werden.
Sie müssen vorsichtig sein, wenn Sie die Ausgaben leistungsbezogene bewerten und vergleichen Sie die leistungsbezogene Ausgaben zur Wand Uhr Anzeigedauer. Wenn keine Anzeichen für andere Leistungsprobleme vorhanden sind, können Sie die Drift-Warnmeldungen in der Regel ignorieren. Beispielsweise können Sie die Drift-Warnmeldungen in den folgenden Situationen normalerweise ignorieren:
  • Prozesse werden wie erwartet ausgeführt.
  • SQL Server-Abfragen werden ungewöhnliche Muster durational nicht ausgeführt.
  • Sie sehen keine Anzeichen für andere Engpässe.
Jedoch bevor Sie die Warnmeldungen, es wird empfohlen, dass Sie wenden Drift ignorieren Ihren Hersteller, um sicherzustellen, dass keine bekannten RDTSC ausgibt, vorhanden.

Das Ablaufverfolgungsflag können 8033 (?T8033) Sie das reporting Verhalten in der Originalversion von SQL Server 2005 und in SQL Server 2005 SP1 wieder. Die Originalversion von SQL Server 2005 und SQL Server 2005 SP1 melden nicht Drift Warnmeldungen. Wenn Sie die Originalversion von SQL Server 2005 oder SQL Server 2005 SP1 ohne Probleme ausführen, können Sie die Nachrichten in der Regel ignorieren.

Warum funktioniert die WAITFOR DELAY-Anweisung korrekt? Was ist mit regelmäßigen Systemprozesse?

Timeout Mechanismen sind den Entwurf mit hoher Auflösung nicht betroffen. SQL Server verwendet nicht den hochauflösenden Zeitgeber für zeitgeberbasierte Aktivitäten. Einige Aktivitäten Timeout basieren auf den Zeitgeber geringere Auflösung, die die GetTickCount -Funktion verwendet. Zu diesen Timeout Aktivitäten zählen Sperrtimeout, WAITFOR DELAY-Anweisung und Deadlock-Erkennung.
Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
938448Ein Windows Server 2003-basierten Server auftreten Zeitstempel Leistungsindikator Drift, wenn der Server Dual-Core AMD Opteron-Prozessoren oder mehreren Prozessoren AMD Opteron-Prozessoren verwendet
895980Programme, die die QueryPerformanceCounter-Funktion verwenden möglicherweise schlecht in Windows Server 2003 und Windows XP durchführen.
Die in diesem Artikel erwähnten Fremdanbieterprodukte werden von einem Lieferanten hergestellt, der von Microsoft unabhängig ist. Microsoft übernimmt keine Garantie, implizite oder sonstige, über die Leistung oder Zuverlässigkeit dieser Produkte.

Eigenschaften

Artikel-ID: 931279 - Geändert am: Dienstag, 16. Dezember 2008 - Version: 7.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
Keywords: 
kbmt kbtshoot kbexpertiseadvanced kbsql2005engine kbprb KB931279 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 931279
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com