Erhalten Sie minimale Protokollierung, wenn Sie Daten in temporäre Tabellen laden


10

Selbst nach dem Lesen des Leistungshandbuchs zum Laden von Daten bin ich mir nicht sicher, ob es notwendig ist, den TABLOCK-Tabellenhinweis zu einer leeren temporären Tabelle hinzuzufügen, die mit einem Clustered-Index definiert ist, um eine minimale Protokollierung zu erzielen.

Offensichtlich wird die temporäre Tabelle in TempDB erstellt, die im EINFACHEN Wiederherstellungsmodus arbeitet. Ich hätte also gedacht, dass dies ein perfekter Kandidat für eine minimale Protokollierung ist, aber ich kann keine Passage finden, um dies zu bestätigen.

Ist eine temporäre Tabelle ein Kandidat für eine minimale Protokollierung, und wenn ja, lohnt es sich, den für permanente Tabellen empfohlenen TABLOCK-Hinweis hinzuzufügen?

Antworten:


18

Ich bin mir nicht sicher, ob es notwendig ist, den TABLOCKTabellenhinweis zu einer leeren temporären Tabelle hinzuzufügen , die mit einem Clustered-Index definiert ist, um eine minimale Protokollierung zu erhalten.

Nein. Lokale temporäre Tabellen ( #temp) sind für die Erstellungssitzung privat , daher ist kein Hinweis zur Tabellensperre erforderlich. Für eine globale temporäre Tabelle ( ##temp) oder eine reguläre Tabelle ( dbo.temp), die in erstellt wurde tempdb, wäre ein Tabellensperrhinweis erforderlich , da auf diese von mehreren Sitzungen aus zugegriffen werden kann.

Beachten Sie, dass Tabellen, die mit tempdbanderen Optimierungen erstellt wurden, auch wenn keine vollständigen Protokollierungsoptimierungen angewendet werden, von anderen Optimierungen profitieren, z. B. dass keine REDOInformationen protokolliert werden müssen. Sie können testen, ob Zeilen oder Seiten mit undokumentiert protokolliert werden sys.fn_dblog. Bei der regelmäßigen Protokollierung werden zeilenprotokollierte Datensätze wie z LOP_INSERT_ROWS.


Beachten Sie, dass das Hinzufügen TABLOCKzu einer lokalen temporären Tabelle erforderlich ist, um eine parallele Ausführung mit INSERT...SELECTAbfragen in SQL Server 2016 zu erhalten. Weitere Informationen finden Sie im Microsoft Knowledge Base-Artikel:

Schlechte Leistung beim Ausführen von INSERT .. SELECT-Vorgängen in SQL Server 2016

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.