SQL 2005 zu langsam?

03/05/2009 - 16:57 von Klaus Mayer | Report spam
Hallo,
ich importiere regelmàßig große Datenmengen von einer alten Btrieve-DB in
MSSQL 2005.
Der Import erfolgt über ein selbstgeschriebenes C++-Programm, welches die
Datensàtze
per OleDB aus Btrieve liest, anpasst und anschliessend an eine SP im Server
übergibt, welche
diese per IF NOT EXISTS in die Tabelle schreibt.
Mein Prob ist nun, dass das Programm ohne DB-Übertragung 10000Ds in 1,3 sek.
verarbeitet.
Mit DB-Übertragung sinkt die Rate aber auf 10000Ds/30sek mit steigender
Tendenz, je mehr übertragen wurde. Da ich aber 30Mio. Ds abgleichen muss,
kommt es mir auf jede Sekunde an.
Hat jemand einen Tipp, wie ich die Verarbeitung in der Datenbank anpassen
kann, so das der Leistungsverlust nicht mehr so erheblich ist?

Für Eure Tipps dankend,

Klaus
 

Lesen sie die antworten

#1 Dieter Strassner
03/05/2009 - 17:10 | Warnen spam
Hallo Klaus,

ich importiere regelmàßig große Datenmengen von einer alten
Btrieve-DB in MSSQL 2005.
Der Import erfolgt über ein selbstgeschriebenes C++-Programm, welches
die Datensàtze
per OleDB aus Btrieve liest, anpasst und anschliessend an eine SP im
Server übergibt, welche
diese per IF NOT EXISTS in die Tabelle schreibt.
Mein Prob ist nun, dass das Programm ohne DB-Übertragung 10000Ds in
1,3 sek. verarbeitet.
Mit DB-Übertragung sinkt die Rate aber auf 10000Ds/30sek mit
steigender Tendenz, je mehr übertragen wurde. Da ich aber 30Mio. Ds
abgleichen muss, kommt es mir auf jede Sekunde an.
Hat jemand einen Tipp, wie ich die Verarbeitung in der Datenbank
anpassen kann, so das der Leistungsverlust nicht mehr so erheblich
ist?



Mit 30 Mio.Datensàtze habe ich nun nicht gerade praktische Erfahrungen, eher
mt 0,3 - 1 Mio. Die Erfahrungen aus dieser Größenordnung kann Dir aber
nennen:

Wenn das Verfahren sich nicht umstellen làßt (aus welchen Gründen auch
immer), dann entferne aus der Zieltabelle alle Indizies die zum Einfügen und
Abgleichen der Daten *nicht* benötigt werden. Erzeuge die Indizies
anschliessend wieder. Die Summe der Zeiten wird dann trotz der
Index-delete+create Zeiten deutlich kürzer sein.

Alternativ: Die Daten erstmal alle übernehmen (hier evtl. anderes
Verfahren/Tool anwenden), danach erst die Daten rauswerfen die nicht
gebraucht wird.Sinnvoll nur, wenn i.d.R. alles übernommen werden kann -
sofern sich das auf dein Problem anwenden làßt.


Viele Grüße

Dieter


Rückfragen bitte nur in die Newsgroup!

EDV-Kommunikation Strassner e.K.
68623 Lampertheim
Internet: www.strassner.biz

Ähnliche fragen