INSERT INTO <tablename> (WITH TABLOCK)
Aufgrund der minimalen Protokollierung kann das Ausführen eines Vorgangs unter Umständen schneller sein. Zu diesen Umständen gehört, dass die Datenbank im BULK_LOGGED
Wiederherstellungsmodell enthalten ist.
Gibt es einen weiteren potenziellen Leistungsvorteil für die Verwendung WITH TABLOCK
einer INSERT
in einer leeren Tabelle, wenn die Datenbank ( tempdb ) das SIMPLE
Wiederherstellungsmodell verwendet?
Ich arbeite mit SQL Server 2012 Standard Edition.
Mein Anwendungsfall ist das Erstellen und sofortige Auffüllen einer temporären Tabelle in einer gespeicherten Prozedur mit einem INSERT...SELECT
, die mehrere Millionen Zeilen enthalten kann. Ich versuche, diese Art von Tempdb- Missbrauch zu vermeiden , aber es wird manchmal benötigt.
Ich versuche, einen Fall zu bauen, der es erfordert TABLOCK
. Es scheint nicht so, als würde es irgendetwas verletzen und könnte einen Nutzen haben. Ich versuche herauszufinden, ob es genügend potenziellen Nutzen gibt, um ihn überall in unserer Codebasis hinzuzufügen, wo es sicher keinen anderen Prozess gibt, der in die Tabelle schreiben möchte.
Ich füge normalerweise in eine neu erstellte lokale temporäre Tabelle mit einer Cluster-PK ein, verwende aber manchmal einen Heap.
quelle