2016-12-21 2 views
0

Ich verwende Bulk einfügen in SSIS, um eine Tabelle mit ca. 10M Zeilen in SQL Server zu füllen. Ich habe viel gegooglet und konnte immer noch keine Antwort dafür finden.SSIS - Massen einfügen Wie viele Zeilen pro Stapel können ausgewählt werden?

Wie viele Zeilen pro Batch sollte ich wählen? Wie viele Maximale Insert-Commit-Größe sollte ich wählen?

Es wäre großartig, eine Erklärung zu jedem einzelnen zu erhalten.

Ich habe es getestet und die Zeilen pro Batch geändert. Das beste Ergebnis, das ich bis jetzt erhalten habe, ist für 5M.

Schätzen Sie Ihre Hilfe!

+0

Einige gute Antworten in dieser bestehenden Frage: http://stackoverflow.com/questions/2739320/ssis-2008-rows-per-batch-and-maximum-insert-commit-size#2739416 – jorgesalvador

Antwort

0

ROWS_PER_BATCH setzen sollte, um Ihre Schätzung der „Gesamtzahl der Zeilen in der Quelle“ gesetzt werden, da dies dann verwendet wird, durch den SQL-Server, um den Abfrageplan zum Laden dieser Daten in einer einzigen Operation zu optimieren.

So, basierend auf meine Interpretation sollten die vorgeschlagenen Einstellungen wie folgt:

Wenn „Maximale Einsatz begehen Größe“ angegeben wird dann nicht die Mühe „Zeilen pro Batch“ einstellen, wie es ohnehin

werden ignoriert

Wenn "Maximale Insert-Commit-Größe" nicht angegeben ist, dh links als 0, dann setzen Sie "Rows Pro Batch" auf die beste Schätzung der "Gesamtzahl der Zeilen", die geladen wird, damit SQL Server die effizienteste auswählen kann Möglichkeit, die Operation durchzuführen.

0

Für BatchSize Eigenschaften, ich glaube, alle Daten zu einer Charge gedrückt werden, wenn Sie es auf 0

+0

Aber was ist der beste Ansatz dazu? Warum man 0 benutzt? Dank –

+1

gibt es keinen solchen "besten Ansatz", sondern hängt von Ihrem wahren Fall ab. Kurz gesagt: Wenn die Daten auf 0 gesetzt werden, werden alle Daten in einem Stapel abgelegt. Sie werden als eine Transaktion behandelt. Wenn etwas fehlschlägt, wird die Transaktion zurückgesetzt, aber für eine bestimmte Anzahl von Zeilen für Stapel, z. 100 Zeilen pro Stapel, es werden 100 Zeilen pro Transaktion eingefügt. Wenn irgendetwas während Stapel 3 fehlschlägt, wird der eingelegte Stapel 1 und Stapel 2 NICHT zurückgesetzt, nur Stapel 3 und der Vorgang wird gestoppt. – LONG

+0

Wenn Sie mehr Referenz benötigen: https: //technet.microsoft.com/en-us/library/ms188267 (v = sql.105) .aspx – LONG

Verwandte Themen