Microsoft .NET, Server and more RSS 2.0
# Monday, April 12, 2010

Ich hatte zum Teil Probleme beim Import von Massendaten mit den Zeiten. So war meine bisherige Vorgehensweise, dass ich die Daten erst in eine Temp -Tabelle geschrieben habe. Danach die Daten mehrmals validiert habe und im letzten Schritt verwertbare Datensätze in eine richtige Tabelle geschrieben habe. Datensätze mit Fehlern wurden in eine andere Tabelle geschrieben und als Fehler ausgegeben.

 

Dieses Vorgehen war mit LINQ und mehrfachem Speichern sehr langsam!

 

Ich habe nun mit meinem Kollegen Ralf Stiegele zusammen verschiedene Datenszugriffe ausprobiert und die Zeiten gemessen. Da beim Test kein Unterschied zwischen SQL 2005 und 2008 zu sehen war, schreibe ich nur vom SQL Server. Die Testdatei im Import hat 160.000 Zeilen und 60 Spalten. Es wurden 3 Läufe als Mittel gewertet und auf ganze Minuten gerundet. Bei diesen Import wurden keine Validierungen berücksichtigt.

 

 

Programm läuft auf dem SQL Server direkt ab (4GB Ram / 2 Prozessoren)

Programm läuft auf einem separaten virtuellen Client ab (4GB Ram / 2 Prozessoren / GB-LAN)

Programm läuft auf einem separaten physischen Client ab (2 GB Ram / 1 Prozessor / 100MBit LAN)

Import Stored Procedures

17 Minuten

17 Minuten

31 Minuten

Import mit LINQ

 

6 Minuten

7 Minuten

15 Minuten

Import mit Datasets

 

6 Minuten

7 Minuten

14 Minuten

Import mit Direct SQL

 

6 Minuten

7 Minuten

11 Minuten

Import mit Integration Sercvices (SSIS)

nicht gemessen

nicht gemessen

6 Minuten

SQLBulkCopy

1 Minute

1 Minute

nicht gemessen

 

Gefühlt  müsste es schneller gehen… Hat jemand noch eine bessere Alternative oder bessere Zeiten gemessen?

 

Bei uns ist der SSIS schwierig zu deployen und LINQ bietet am meisten Komfort. Wenn ich nun Programmierzeiten und Zeitersparnis bewerte, würde ich weiter LINQ nehmen und nur auf das Zwischenspeichern verzichten. Alle Validierungen müssten also beim ersten Einlesen passieren. Das Speichern von Daten im SQL Server ist einfach sehr Ressourcenfressend.

 

--- Update ---

SqlBulkCopy ist richtig fix. Wir konnten Zeiten für den Test oben von rund 50 Sekunden erreichen. Vielen Dank für die guten Tipps!!!

Monday, April 12, 2010 4:03:29 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [4] -
.net | Client | Deployment | Server | SQL
Tracked by:
http://topsy.com/trackback?utm_source=pingback&utm_campaign=L1&url=http://blog.i... [Pingback]
Navigation
Archive
<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910
Blogroll
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2012
Florian Schmidt
Sign In
Statistics
Total Posts: 102
This Year: 0
This Month: 0
This Week: 0
Comments: 94
Themes
Pick a theme:
All Content © 2012, Florian Schmidt
DasBlog theme 'Business' created by Christoph De Baene (delarou)