Sie Art und Weise nur diese Frage zu beantworten ist mit einem sehr hohen Niveau allgemeine Reaktion.
Sie haben ein paar Optionen:
- einfach mehr Platz TempDB zuordnen.
- Optimieren Sie Ihre ETL-Abfragen und optimieren Sie Ihre Indizes.
Option 2 ist oft die bessere Approach. Übermäßige Verwendung von TempDB zeigt an, dass ineffiziente Sortierungen oder Verknüpfungen auftreten. Um dies zu beheben, müssen Sie die tatsächlichen Ausführungspläne Ihres ETL-Codes analysieren. Achten Sie auf Folgendes:
- Ausrufezeichen in Ihrem Abfrageplan. Dies deutet oft darauf hin, dass eine Join-Operation oder eine Sortieroperation auf TempDB übertragen werden musste, da der Optimierer die erforderliche Speichermenge schätzte. Sie könnten Statistiken haben, die aktualisiert werden müssen.
- Suchen Sie nach großen Unterschieden in der geschätzten Anzahl der Zeilen und der tatsächlichen Anzahl der Zeilen. Dies kann auch auf veraltete Statistiken von Parameter-Sniffing-Problemen hinweisen.
- Suchen Sie nach Sortieroperationen. Es ist oft möglich, diese zu entfernen, indem Sie Indizes zu Ihren Tabellen hinzufügen.
- Suchen Sie nach ineffizienten Zugriffsmethoden. Diese können oft durch Hinzufügen von Deckungsindizes gelöst werden. ZB Tabellensuche, wenn Sie nur eine kleine Anzahl von Zeilen aus einer großen Tabelle benötigen. Beachten Sie, dass Tabellen-Scans beim Laden von Data Warehouses oft der beste Ansatz sind.
Ich hoffe, das war hilfreich.
Marius
Woher wissen Sie, dass tempdb voll ist, verursacht Langsamkeit? Wenn tempdb während der Paketausführung voll ist, erhalten Sie normalerweise einen Fehler und keine Leistungseinbuße. – mallan1121