Die Tempdb eines Servers (SQL Server 2008) wird mehrmals monatlich auf über 500 GB erhöht. Ist es möglich herauszufinden, welche SQL-Anweisungen dieses Problem verursacht haben? Das Problem wird normalerweise nicht durch create table #temp...; insert into #temp...
oder select ... into #temp...
sondern durch komplexe Verknüpfungen verursacht.
Die Anfangsgröße einiger Tempdb-Dateien wird jedes Mal automatisch auf viel größere Werte gesetzt. Wie kann man das verhindern?
Manchmal verhindern die zwischengespeicherten Pläne die Größenänderung / Verkleinerung der Dateien. Wie finde ich welche die tempdb halten?
sql-server
sql-server-2008
tempdb
u23432534
quelle
quelle
Antworten:
Es gibt drei DMVs, mit denen Sie die Tempdb-Nutzung verfolgen können:
Mit den ersten beiden können Sie die Zuordnungen auf Abfrage- und Sitzungsebene verfolgen. Der dritte Teil verfolgt die Zuordnungen über den Versionsspeicher, Benutzer und interne Objekte.
Die folgende Beispielabfrage gibt Ihnen Zuordnungen pro Sitzung:
Wenn Sie die Nutzung über einen bestimmten Zeitraum verfolgen möchten, sollten Sie Daten mit sp_whoisactive erfassen , wie Kendra Little demonstriert hat .
quelle
[SPACE Allocated FOR USER Objects (in KB)]
und[SPACE Deallocated FOR USER Objects (in KB)]
der tatsächlich belegte Raum der Sitzung?Es kann verschiedene Ursachen für ein Problem geben:
SORT_IN_TEMPDB = ON
quelle