An meiner Arbeitsstelle ist eine Bewegung im Gange, um von der Verwendung von # temporären Tabellen abzurücken und stattdessen permanente physische Tabellen mit SPIDs zu verwenden. Wann immer man zuvor IN eine #temp-Tabelle eingefügt hatte, ist jetzt eine INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)
erforderlich - zusammen mit einer Reihe von DELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPID
Anweisungen am Anfang zB einer gespeicherten Prozedur. Darüber hinaus ist es selbstverständlich, dass überall, wo diese "permanenten Tabellen zum Speichern temporärer Daten" verwendet werden, darauf geachtet werden muss, a einzuschließen WHERE SPID = @@SPID
.
Die Logik hinter dieser Vorgehensweise besteht darin, die Gesamtleistung des Servers zu verbessern, auf dem die Abfragen ausgeführt werden (indem E / A und Konflikte in Tempdb reduziert werden). Ich bin aus mehreren Gründen nicht an diesem Ansatz interessiert - er ist hässlich, potenziell gefährlich und scheint die Leistung der Abfragen zu beeinträchtigen, die das neue Schema verwenden.
Hat jemand Erfahrung mit diesem oder ähnlichen Ansätzen zum Entfernen von # temporären Tabellen?
quelle
Dies scheint eine drastische Lösung zu sein. Es sind viele Artikel online über das Reduzieren von Tempdb-Konflikten (und das Optimieren ihrer Verwendung). Hat Ihre Organisation diese Möglichkeit gründlich untersucht?
http://www.sql-server-performance.com/tips/tempdb_p1.aspx
http://www.sqlservercentral.com/blogs/robert_davis/archive/2010/03/05/Breaking-Down-TempDB-Contention.aspx
http://searchsqlserver.techtarget.com/tip/Optimize-tempdb-in-SQL-Server-by-striping-and-splitting-to-multiple-files
etc.
quelle
Klingt für mich wie sollten Sie die Performance - Probleme innerhalb tempDB werden zur Fehlerbehebung gibt ein paar Vorschläge ist in hier
quelle