Verbesserte Parallelität für die Tempdb-Datenbank

FEHLER #: 362099 (SHILOH_BUGS)

Problembeschreibung

Wenn die Tempdb -Datenbank ausgelastet ist, kann SQL Server Konflikte auftreten, beim Versuch, die Seiten reservieren.

Sysprocesses System Tabelle Ausgabe möglicherweise die Waitresource "2:1:1" (PFS-Seite) oder "2:1:3" (SGAM-Seite) angezeigt. Je nach Konflikten kann dies zu SQL Server erscheint kurzzeitig nicht reagiert führen.


Diese Vorgänge verwenden häufig Tempdb:
  • Erstellen und Ablegen von temporären Tabellen (lokal oder global) wiederholt.
  • Tabellenvariablen, die Tempdb für Speicherung verwenden.
  • Arbeiten Sie Cursor zugeordnete Tabellen.
  • Arbeiten Sie mit einer ORDER BY-Klausel verknüpfte Tabellen.
  • Arbeiten Sie mit GROUP BY-Klausel verknüpfte Tabellen.
  • Arbeiten Sie mit HASH verknüpfte Dateien.
Erhebliche und dünne Verwendung dieser Aktivitäten führen, die Konflikte.

Ursache

Beim Erstellen, des Objekts müssen zwei (2) Seiten aus gemischten Block zugewiesen und das neue Objekt zugewiesen. Eine Seite für Index Allocation Map (IAM) und die zweite wird für die erste Seite des Objekts. SQL Server überwacht gemischte Blöcke freigegeben Global Allocation Map (SGAM) der Seite. Jede SGAM-Seite verfolgt ungefähr 4 GB an Daten.

Als Teil eine Seite aus gemischten Block zuweisen muss SQL Server Scannen der Seite Free Space (PFS) herausfinden, welche gemischte Seite zugeordnet werden kann. PFS-Seite verfolgt freien Speicherplatz auf jeder Seite, und jede PFS-Seite verfolgt ungefähr 8.000 Seiten. Entsprechende Synchronisierung bleibt PFS und SGAM-Seiten ändern; und das können andere Modifizierer kurzzeitig stall.

Eine gemischte Seite Zuweisen von SQL Server sucht wird immer die Überprüfung auf dieselbe Datei und SGAM-Seite gestartet. Dadurch intensiver Konflikte auf SGAM gemischte mehrere Seite Umlagen, die im Abschnitt "Symptome" dieses Artikels beschrieben Probleme verursachen können.

Hinweis Speicherfreigabe Aktivitäten müssen auch die Seiten ändern, die zunehmende Anzahl von Konflikten beitragen können.

Erfahren Sie mehr über unterschiedliche Allocation stellt SQL Server (SGAM GAM PFS, IAM) finden Sie im Abschnitt "Informationsquellen" dieses Artikels.

Problemlösung

Microsoft SQL Server 2000


Um die Reservierung für Tempdb Ressourcenkonflikte, die stark beanspruchten auftritt, gehen alle folgendermaßen vor:
  1. Wenden Sie Servicepack 4 für Microsoft SQL Server 2000. SQL Server 2000 Service Pack 4 (SP4) steht auf der folgenden Microsoft-Website:

    http://www.microsoft.com/downloads/details.aspx?FamilyId=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5

    Klicken Sie für Weitere Informationen auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
    290211 so erhalten Sie das neueste Servicepack für SQL Server 2000
  2. Implementieren Sie das Ablaufverfolgungsflag -T1118.
  3. Erhöhen Sie die Anzahl von Datendateien in Tempdb Datenträgerbandbreite maximieren und bei Reservierungsstrukturen. Eine Regel ist die Anzahl der logischen Prozessoren weniger als 8 oder gleich 8, verwenden Sie dieselbe Anzahl Dateien als logische Prozessoren. Wenn die Anzahl der logischen Prozessoren größer als 8, 8 Dateien verwenden und wenn weiterhin Konflikte erhöhen Sie die Anzahl der Dateien durch ein Vielfaches von 4 (bis die Anzahl der logischen Prozessoren) bis der Konflikt auf ein annehmbares Niveau reduziert oder ändern Sie die Arbeitslast-Code.
Hinweis Diese Schritte gelten auch für Microsoft SQL Server 7.0. Die einzige Ausnahme ist, dass es kein Hotfix für SQL Server 7.0; Schritt 1 gilt daher nicht.

Bei Schritt 2 die Verwendung der Trace flag - T1118 für Microsoft SQL Server 7.0 vor der Verwendung von Ablaufverfolgungsflags finden Sie im folgenden Artikel der Microsoft Knowledge Base:
813492 beheben: aktiviert das Ablaufverfolgungsflag 1118 Index schlägt fehl auf SQL Server 7.0 erstellen

Microsoft SQL Server 2005 und höher

Um die Zuordnung für Tempdb Ressourcenkonflikte, die stark beanspruchten auftritt, gehen Sie folgendermaßen vor:
  1. Implementieren von Trace flag - T1118.
  2. Erhöhen Sie die Anzahl von Datendateien in Tempdb Datenträgerbandbreite maximieren und bei Reservierungsstrukturen. Regel verwenden Sie Anzahl logischer Prozessoren kleiner oder gleich 8 ist, die gleiche Anzahl Dateien als logische Prozessoren. Wenn die Anzahl der logischen Prozessoren größer als 8, 8 Dateien verwenden und wenn weiterhin Konflikte erhöhen Sie die Anzahl der Dateien durch ein Vielfaches von 4 (bis die Anzahl der logischen Prozessoren) bis der Konflikt auf ein annehmbares Niveau reduziert oder ändern Sie die Arbeitslast-Code.

Weitere Informationen

Wie Konflikte verringert die Fehlerbehebung in SQL 2000 SP4 oder höher

SQL Server 2000 Sp4 und höher gibt es eine Korrektur, die Round-Robin-Algorithmus für gemischte Seite Umlagen einführt. Mit dem Update werden der Startdatei jetzt für jede Zuweisung aufeinander folgenden gemischte Seite (Wenn mehr als eine Datei vorhanden ist). Dies vermeidet das Problem Konflikte durch aufspalten des Zuges mit demselben Ausgangspunkt der SGAMs in der gleichen Reihenfolge durchlaufen. Neue Zuordnung Algorithmus für SGAM ist reine Round-Robin und proportionale um Geschwindigkeit nicht berücksichtigt. Microsoft empfiehlt, Tempdb Datendateien Größe erstellen.

Implementierung Ablaufverfolgungsflag-Clientnamensabfragen T1118

Hier ist die Liste der Verwendung von -T1118 Reduzierung von Konflikten:
  • -T1118 ist eine Server-Einstellung.
  • Enthalten die -T1118 von Ablaufverfolgungsflags in die Startparameter für SQL Server, damit das Ablaufverfolgungsflag wirksam bleibt auch nach SQL Server wiederverwendet.
  • -T1118 fast alle einzelne Seiten reserviert auf dem Server entfernt.
  • Deaktivieren Sie die meisten einzelne Seiten reserviert, verringern Sie Konflikte auf der SGAM-Seite.
  • Mit -T1118 aktiviert, werden fast alle neue Umlagen auf GAM ausgeführt (z. B. 2:1:2), weist 8 Seiten (Grad 1) gleichzeitig auf ein Objekt im Gegensatz zu einer einzelnen Seite aus ein Block für die ersten acht (8) Seiten eines Objekts ohne das Ablaufverfolgungsflag.
  • IAM-Seiten verwenden noch einzelne Seiten reserviert SGAM-Seite auch mit -T1118 aktiviert. Jedoch zusammen mit Hotfix 8.00.0702 und erhöhte Tempdb -Dateien das Endergebnis ist eine Konkurrenz SGAM-Seite. Speicherplatz Probleme finden Sie im Abschnitt "Nachteile" dieses Artikels.

Die Zahl der Tempdb-Dateien mit gleicher Größe

Wenn die Datendateigröße tempdb 5 GB ist und die Größe der Protokolldatei 5 GB beträgt wird empfohlen, einzelne Datendatei 10 (jeweils gleicher Größe zu 500 MB) erhöhen und die Protokolldatei ist. Die verschiedenen Datendateien auf getrennten Datenträgern wäre gut. Allerdings ist dies nicht erforderlich und können nebeneinander auf derselben Festplatte existieren.

Die optimale Anzahl der Tempdb -Dateien hängt an Konflikte in Tempdbangezeigt. Als Ausgangspunkt können Sie Tempdb mindestens gleich der Anzahl der Prozessoren für SQL Server zugewiesen. Für höhere End-Systemen (z. B. 16 oder 32 Proc) könnte die Startnummer 10. Wenn der Konflikt nicht reduziert ist, müssen Sie die Zahl der Dateien mehr.

Hinweis Dual-Core-Prozessor wird als zwei Prozessoren.

Gleiche Größe der Datendateien ist wichtig, weil der proportionale Algorithmus auf die Größe der Dateien. Datendateien mit ungleich erstellt, versucht der proportionale Algorithmus mit der größten Datei GAM Umlagen für weitere statt Zuordnungen zwischen den Dateien und besiegen des Zwecks der Erstellung mehrere Dateien.

Die Vergrößerung von Tempdb -Dateien können auch proportionale Algorithmus beeinträchtigen. Daher kann es eine gute Idee, die Vergrößerung-Funktion für die Tempdb -Dateien deaktivieren sein. Wenn die Vergrößerung Option deaktiviert ist, müssen Sie sicherstellen Datendateien erstellen, sind sie groß genug ist, um zu verhindern, dass den Server mangelnder Speicherplatz auf dem Datenträger mit Tempdbauftritt.

Wie erhöhen Sie die Anzahl der Tempdb Dateien mit gleicher Größe Clientnamensabfragen

Hier ist eine Liste wie Konflikte die Zahl der Tempdb -Dateien mit gleicher Größe verringert:
  • Mit einer Datendatei für Tempdbmüssen Sie nur eine GAM-Seite und eine SGAM-Seite für jede 4 GB Speicherplatz.
  • Erhöhen der Anzahl von Dateien mit gleichen Größen für
    Tempdb erstellt effektiv mindestens GAM- und SGAM-Seiten für jede.
  • Zuordnung Algorithmus für GAM gibt einen Block gleichzeitig (acht aufeinander folgenden Seiten) von der Anzahl der Dateien im Roundrobin während der proportionale berücksichtigt. Daher haben 10 gleiche große Dateien ist die erste Zuweisung von Datei1, Sekunde von Datei2, die dritte aus Datei3.
  • Ressourcenkonflikte PFS-Seite wird reduziert, da acht Seiten als gleichzeitig markiert werden, da GAM Seiten zuweisen.

Nachteile

Der einzige Nachteil Ratschläge erwähnt wird, Sie die Größe der Datenbanken erhöhen sehen, wenn Folgendes zutrifft:
  • Neue Objekte werden in einer Datenbank erstellt.
  • Neue Objekte belegen weniger als 64 KB Speicher.
Wenn diese Bedingung zutrifft, können 64 KB zuweisen (8 Seiten * 8 KB = 64 KB) für ein Objekt, das nur 8 KB Speicherplatz erforderlich, damit verschwenden 56 KB Speicher. Wenn das neue Objekt mehr als 64 KB verwendet (8 Seiten) in Lebensdauer ist gibt es kein Nachteil mit Ablaufverfolgungsflags. Daher kann im schlimmsten Fall SQL Server am Ende Reservierung von 7 zusätzliche Seiten während der ersten Zuordnung nur für neue Objekte Seite eins (1) nicht übersteigen.


Referenzen

Weitere Informationen über GAM-, SGAM-, PFS und IAM finden Sie folgende SQL Server 2000-Onlinedokumentation:
  • "Verwalten von Objekten verwendeten Speicherplatzes"
  • "Sind und Speicherplatz verwalten"
  • "Tabellen- und Indexarchitektur"
  • "Heapstrukturen"
Weitere Verweise

Weitere Informationen über die Tempdb-Datenbank in SQL Server 2005 finden Sie auf der folgenden MSDN-Website:

http://technet.microsoft.com/en-us/library/cc966545.aspx

Weitere Informationen zu Dateien der Tempdb-Datenbank und Trace Tlag 1118 finden Sie auf der folgenden MSDN-Website:

http://blogs.msdn.com/b/psssql/archive/2009/06/04/sql-server-tempdb-number-of-files-the-raw-truth.aspx

Weitere Informationen zur Verwendung von Trace Flag 1118 in SQL Server 2005 und SQL Server 2008 finden Sie auf der folgenden MSDN-Website:

http://blogs.msdn.com/b/psssql/archive/2008/12/17/sql-server-2005-and-2008-trace-flag-1118-t1118-usage.aspx

Weitere Informationen zum Überwachen und Behandeln von Zuordnung Engpässe in der Datenbank Tempdb finden Sie auf der folgenden MSDN-Website:

http://blogs.msdn.com/b/sqlserverstorageengine/archive/2009/01/11/tempdb-monitoring-and-troubleshooting-allocation-bottleneck.aspx


Eigenschaften

Artikelnummer: 328551 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback