Optimieren der Leistung des Massenimportierens
In diesem Thema werden Optionen zum Optimieren des Massenimports von Daten in eine Tabelle in Microsoft SQL Server mithilfe eines bcp-Befehls, einer BULK INSERT-Anweisung oder einer OPENROWSET(BULK...)-Funktion (Transact-SQL) beschrieben. Um Daten so schnell wie möglich zu massenimportieren oder -exportieren, müssen Sie die Faktoren, die sich auf die Leistung auswirken, und die verfügbaren Befehlsqualifizierer zum Verwalten der Leistung kennen. Verwenden Sie nach Möglichkeit eine Transact-SQL-Anweisung zum Massenimportieren von Daten in SQL Server, weil Transact-SQL schneller ist als bcp.
Hinweis |
---|
Einen Vergleich dieser Methoden finden Sie unter Informationen zu Massenimport- und Massenexportvorgängen. |
Wie die Leistung eines Massenimportvorgangs am besten gesteigert wird, hängt von den folgenden Faktoren ab:
Ob die Tabelle Einschränkungen und/oder Trigger aufweist.
Das von der Datenbank verwendete Wiederherstellungsmodell.
Weitere Informationen finden Sie unter Übersicht über Wiederherstellungsmodelle.
Ob die Tabelle, in die Daten kopiert werden, leer ist.
Ob die Tabelle Indizes aufweist.
Ob TABLOCK angegeben ist.
Ob die Daten von einem einzigen Client oder parallel von mehreren Clients kopiert werden.
Ob die Daten zwischen zwei Computern, auf denen SQL Server ausgeführt wird, kopiert werden sollen.
Wichtig |
---|
In SQL Server 2005 und höheren Versionen sind Massenimportoptimierungen verfügbar, wenn Trigger aktiviert werden. Die Zeilenversionsverwaltung wird für Trigger verwendet und speichert die Zeilenversionen im Versionsspeicher in tempdb. Bevor Sie einen Massenimport eines großen Batches von Datensätzen mithilfe von Triggern ausführen können, müssen Sie gegebenenfalls die Größe von tempdb erweitern, um der Auswirkung der Trigger auf den Versionsspeicher gerecht zu werden. |
Informationen zu den Auswirkungen dieser Faktoren auf Massenimportszenarien finden Sie unter Richtlinien zur Optimierung von Massenimport.
Methoden zum Optimieren des Massenimports
Zum Beschleunigen des Massenimports von Daten sind in SQL Server die folgenden Methoden verfügbar:
Verwenden minimaler Protokollierung
Beim einfachen Wiederherstellungsmodell werden die meisten Massenvorgänge nur minimal protokolliert.
Für eine Datenbank, bei der das vollständige Wiederherstellungsmodell verwendet wird, werden alle beim Massenimport ausgeführten Vorgänge für das Einfügen von Zeilen vollständig im Transaktionsprotokoll protokolliert. Bei umfangreichen Datenimporten kann dies dazu führen, dass das Transaktionsprotokoll schnell aufgefüllt wird. Für Massenimportvorgänge ist die minimale Protokollierung effizienter als die vollständige Protokollierung und reduziert die Möglichkeit, dass ein Massenimportvorgang den Protokollspeicherplatz auffüllt. Damit ein Massenimportvorgang für eine Datenbank, bei der normalerweise das vollständige Wiederherstellungsmodell verwendet wird, minimal protokolliert wird, können Sie die Datenbank zuerst auf das massenprotokollierte Wiederherstellungsmodell umschalten. Nach dem Massenimport der Daten schalten Sie das Wiederherstellungsmodell wieder auf das vollständige Wiederherstellungsmodell um. Weitere Informationen finden Sie unter Überlegungen für den Wechsel zwischen vollständigem und massenprotokolliertem Wiederherstellungsmodell.
Hinweis Eingefügte Zeilen werden minimal protokolliert, wenn eine optimierte Massenprotokollierung anwendbar ist. Andernfalls werden die eingefügten Zeilen vollständig im Transaktionsprotokoll protokolliert. Weitere Informationen dazu, wann Massenimportvorgänge protokolliert werden und wie minimal protokollierte Massenimportvorgänge ausgeführt werden, finden Sie unter Vorgänge, für die eine minimale Protokollierung verfügbar ist und Voraussetzungen für die minimale Protokollierung beim Massenimport.
Paralleles Importieren von Daten von mehreren Clients in eine einzige Tabelle
Mit SQL Server können Daten parallel von mehreren Clients in eine einzige Tabelle massenimportiert werden. Alle drei Massenimportmethoden unterstützen das parallele Importieren von Daten. Dadurch kann die Leistung der Datenimportvorgänge verbessert werden.
Weitere Informationen finden Sie unter Paralleles Importieren von Daten mit Sperren auf Tabellenebene.
Verwenden von Batches
Informationen zum Verwenden von Batches beim Importieren von Daten und Informationen zu den Befehlsqualifizierern zum Verwalten von Batches finden Sie unter Verwalten von Batches für den Massenimport.
Hinweis Mit der Option BULK der OPENROWSET-Klausel kann die Batchgröße nicht gesteuert werden.
Deaktivieren von Triggern
Das Deaktivieren von Triggern kann die Leistung verbessern.
Weitere Informationen zur Auswirkung der Ausführung von Triggern auf Massenimportvorgänge und dazu, wie Trigger aktiviert oder deaktiviert werden, finden Sie unter Steuern der Triggerausführung beim Massenimport von Daten.
Deaktivieren von Einschränkungen
Informationen zur Auswirkung der Einschränkungsüberprüfung auf Massenimportvorgänge und dazu, wie CHECK- und FOREIGN KEY-Einschränkungen einer Tabelle aktiviert oder deaktiviert werden, finden Sie unter Steuern der Einschränkungsüberprüfung mithilfe von Massenimportvorgängen.
Anordnen der Daten in einer Datendatei
Standardmäßig wird bei einem Massenimportvorgang angenommen, dass eine Datendatei nicht sortiert ist. Mithilfe des Dienstprogramms bcp, der BULK INSERT-Anweisung und der OPENROWSET(BULK…)-Funktion (Transact-SQL) können Sie angeben, wie Daten in der Datendatei während eines Massenimportvorgangs sortiert werden, wenn die Tabelle über einen gruppierten Index verfügt. Die Daten in der Datendatei müssen nicht in derselben Reihenfolge wie in der Tabelle sortiert werden. Die Leistung des Massenimportvorgangs kann jedoch durch eine identische Reihenfolge verbessert werden.
Weitere Informationen finden Sie unter Steuern der Sortierreihenfolge beim Massenimport von Daten.
CSteuern des Sperrverhaltens
Informationen zum Angeben des Sperrverhaltens während Massenimportvorgängen finden Sie unter Steuern des Sperrverhaltens für den Massenimport.
Importieren von Daten im systemeigenen Format
Weitere Informationen finden Sie unter Verwenden des systemeigenen Formats zum Importieren oder Exportieren von Daten und Verwenden des systemeigenen Unicode-Formats zum Importieren oder Exportieren von Daten.
Siehe auch