SqlBulkCopy-Leistung
Ich arbeite daran, die Leistung von Massengütern zu steigern. Hunderte von Millionen von Datensätzen + täglich.
Ich habe dies verschoben, um das zu verwendenIDatareader
Schnittstelle anstelle der Datentabellen und bekam eine spürbare Leistungssteigerung (500.000 weitere Datensätze pro Minute). Das aktuelle Setup ist:
IDatareader
Schnittstelle.DannSqlBulkCopy
schreibt an ServerDer Großteil des Performance-Flaschenhalses befindet sich direkt inSqlBulkCopy.WriteToServer
. Wenn ich den Prozess bis aber ausschließlich nur die Unit testeWriteToServer
Der Vorgang kehrt in ca. 1 Minute zurück.WriteToServer
dauert weitere 15 Minuten. Für den Komponententest befindet er sich auf meinem lokalen Computer, sodass auf demselben Laufwerk die Datenbank gespeichert ist und die Daten nicht über das Netzwerk kopiert werden müssen.
Ich verwende eine Heap-Tabelle (keine Indizes; gruppiert oder nicht gruppiert; ich habe verschiedene Stapelgrößen ohne wesentliche Leistungsunterschiede durchgespielt).
Es ist notwendig, die Ladezeiten zu verkürzen, also hoffe ich, dass jemand jetzt einen Weg findet, um ein bisschen mehr Blut aus diesem Auftritt zu quetschen.