Massenimport von externen Daten

Kürzlich erhielten wir von einem Partner die Anfrage, wie der Massenimport von externen Daten möglichst schnell durchgeführt werden kann. Hierbei handelte es sich konkret um den Import von 927 Millionen Datensätzen. Diese lagen in verschiedenen .csv-Dateien vor. Im folgenden Artikel möchte ich Ihnen aufzeigen, wie wir diesen Vorgang optimieren konnten.


Lokaler Client:

Als erstes wurde die Importprozedur über einen lokalen Client gestartet. Die hier erzielte Einlesegeschwindigkeit lag bei ca. 5,5 Millionen Datensätze pro Stunde. Um alle Datensätze in die Datenbank zu übertagen wurden ca. 168 Stunden benötigt, was einem Zeitraum von 7 Tagen entspricht.

Client auf dem Server:

Um den Einlesevorgang zu beschleunigen, haben wir uns überlegt, wie man den Netzwerk-Traffic vermeidet. Dieser tritt immer dann auf, wenn die zu verarbeitenden Daten von der Workstation an den Server gesendet werden. Als Lösung bot sich an, die Import-Prozedur innerhalb des Clients direkt auf dem Server-Rechner auszuführen. Zusätzlich wurden die .csv-Dateien ebenfalls auf das Server-System übertragen. Hier wurde eine Geschwindigkeit von 9,5 Millionen Datensätzen pro Stunde erreicht. Es verstrichen ca. 98 Stunden, bis alle Datensätze eingelesen waren. Der Zeitraum hier entspricht in etwa 4 Tage.

Remote-Prozedur direkt auf Server:

Sowohl der CONZEPT 16-Client als auch der CONZEPT 16-Server laufen innerhalb des Betriebssystems in einen eigenen Prozess. Die Kommunikation zwischen diesen Komponenten erfolgt über TCP/IP. Der CONZEPT 16-Client sendet folglich die Daten an den CONZEPT 16-Server, dieser verarbeitet diese und sendet ein Resultat zurück. Um diesen Datentransfer zwischen Client und Server zu umgehen, wurde nun die Import-Prozedur als Remote-Prozedur direkt innerhalbs des Datenbankserver-Prozesses ausgeführt. Die nun erreichte Einlesegeschwindigkeit lag bei 30 Millionen Datensätzen pro Stunde, d.h. nach ca. 31 Stunden sind alle Datensätze eingelesen worden.

Zwei Remote-Prozeduren auf Server:

Um eine weitere Steigerung der Verarbeitungsgeschwindigkeit zu erreichen wurde im nächsten Schritt der Vorgang des Einlesens parallelisiert. Hierfür wurden zwei Remote-Prozeduren parallel auf dem Server aufgerufen. Unter Verwendung dieser Vorgehensweise wurden 47,5 Millionen Datensätze pro Stunde eingelesen. Die Dauer bis alle Daten eingelesen waren, lag bei 19,5 Stunden.

Drei und mehr Remote-Prozeduren auf Server:

Im folgenden wurde die Anzahl von parallelen Prozeduren zuerst auf drei, vier und anschließend auf fünf Remote-Prozeduren erhöht. Das optimale Ergebnis wurde bei vier Remote-Prozeduren erreicht. Die Einlesegeschwindigkeit lag nun bei 74,5 Millionen Datensätzen pro Stunde. Nach ca. 12,5 Stunden wurden alle Datensätze übertragen.

Updatezeiten der Datenbank bei vier Remote-Prozeduren

Beim Versuch mit mehr als vier Remote-Prozeduren sank die Geschwindigkeit wieder ab. Der Grund dafür findet sich in den vermehrt auftretenden Sperrkonflikten. Diese treten dadurch auf, dass die parallel laufenden Prozeduren auf gemeinsame Ressourcen zugreifen, beispielsweise auf den Datenbankpuffer. Bei einem auftretenden Sperrkonflikt muss die Operation unter Umständen durch den CONZEPT 16-Server wiederholt werden, dies nimmt zusätzliche Zeit in Anspruch. Da jede Remote-Prozedur innerhalb eines eigenen Threads ausgeführt wird, ist ein System mit mehreren Prozessor-Cores Voraussetzung für die Parallelisierung. Die Threads der Remote-Prozeduren werden vom Betriebssystem den einzelnen Cores zugeordnet und dort verarbeitet. Aus diesem Grund würde das Ausführen von zwei Remote-Prozeduren auf einem Single-Core-System zu keiner Geschwindigkeitssteigerung gegenüber einer einzelnen Remote-Prozedur führen.

Zur Information:

Da die Verabeitungsgeschwindigkeit wesentlich von der Größe des Datenbankpuffers abhängig ist, wurde dieser auf das Maximum des CONZEPT 16-Servers gesetzt.

Klicken Sie hier, um die Nutzungsbedingungen für unseren Blog zu lesen.

3 Antworten

  1. @tsauter
    …da sieht man, was die neueste Hardware an Verbesserung bringen kann 🙂 Unsere Testmaschine ist von Anfang 2010, mit 2x XEON 5630 und 2,53 GHz, betrieben mit Windows Server 2012.

    Ich vermute, dass ihr Server mit 3,4 GHz-Prozessor und unter Linux läuft?

  2. Nochmals Danke dafür! Im konkreten Fall wurden die Daten auf einer Maschine mit Quad-Core, SSD Raid10 und 64GB Hauptspeicher in ziemlich genau 6 Stunden eingelesen.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Leave the field below empty!

Wünsche, Fragen oder Feedback sind willkommen:

Nutzungsbedingungen der Kommentarfunktion im Blog

1. Allgemeines

Vectorsoft AG („Anbieter“) stellt für Internetnutzer („Nutzer“) auf der Website
vectorsoft.de einen öffentlichen Blog bereit. Der öffentliche Blog dient dem
Informations- und Gedankenaustausch. Die Nutzer, welche sich mit Beiträgen und
Kommentaren beteiligen, verpflichten sich dazu, die Blog-Nutzungsbedingungen
einzuhalten und tragen die Verantwortung für die Richtigkeit und Angemessenheit
sowie Freiheit von Rechtsverletzungen ihrer Beiträge. Mit Nutzung der
Kommentarfunktion in unserem Blog akzeptieren Sie diese Nutzungsbedingungen.

2. Netiquette

Wir bitten Sie von persönlichen Angriffen und Provokationen aufgrund anderer
Meinungen abzusehen. Bitte argumentieren Sie sachlich und bewegen Sie sich auf
der Basis einer konstruktiven Diskussionskultur. Ihr Kommentar sollte stets im
Zusammenhang mit dem jeweiligen Thema sein, um Ausschweifungen in andere
Themenbereiche zu vermeiden. Das mehrmalige Posten desselben Kommentars
oder mehrerer ähnlicher Kommentare ist nicht erlaubt.

3. Verbot rechtswidriger Inhalte

Mit Absenden Ihres Kommentars bestätigen Sie, dass Sie keine Urheberrechte oder andere Rechte Dritter verletzen. Volksverhetzende, rassistische Äußerungen, Anleitungen zu Straftaten und deren Verherrlichung, Gewaltdarstellungen, pornografische Inhalte und Äußerungen, die Persönlichkeitsrechte verletzen sind untersagt.

4. Keine Werbung

Die Nutzung der Kommentarfunktion ist für kommerzielle oder parteipolitische
Zwecke nicht erlaubt. Werbliche Beiträge aller Art werden von uns umgehend
gelöscht.

5. Angaben zum Namen

Bei der Eingabe Ihres Namens achten Sie auf die zuvor genannten Grundsätze.

6. Quellenangaben

Bitte geben Sie bei der beabsichtigten Veröffentlichung von Zitaten oder Beiträgen
Dritter die jeweiligen Quellen an und erläutern dessen Bezug zum Blogbeitrag.

7. Verstoß gegen die Nutzungsbedingungen

Beiträge, die gegen diese Richtlinie verstoßen werden umgehend gelöscht. Sollten
Sie selbst Verstöße bemerken, so senden Sie uns bitte den Link des betreffenden
Kommentars per E-Mail an . Wir weisen ausdrücklich daraufhin, dass wir einzelne Nutzer bei wiederholten oder schweren Verstößen gegen diese
Nutzungsbedingungen ausschließen werden.

Stand: Sept. 2024

Deine Trial Version - jetzt anfordern!

Teste yeet - unverbindlich und kostenfrei

IHRE EVALUIERUNGSLIZENZ - JETZT ANFORDERN!

TESTEN SIE DIE CONZEPT 16 VOLLVERSION - UNVERBINDLICH und KOSTENFREI

Melden Sie sich bei unserem Newsletter an

Anrede*
     
Zustimmung zur Datenverarbeitung gem. DSGVO*



WordPress Cookie-Hinweis von Real Cookie Banner