Import von Massendaten

437 Aufrufe

Veröffentlicht am

In dieser Präsentation befasst sich Oliver Wronka, Principal Architect/ Project Manager bei axxessio, mit dem Import von Massendaten.

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
437
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
4
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Import von Massendaten

  1. 1. Import von Massendaten JANUAR 2014 OLIVER WRONKA
  2. 2. Inhalt » » » » » » Aufgabenstellung Einfach, aber langsam 1. Tuningstufe – Blockweises Commit 2. Tuningstufe – Wegwerfen / Neu 3. Tuningstufe – Wegwerfen / Neu Tablespace, Datafiles, Tables and Partitions 2
  3. 3. Aufgabenstellung » Es liegt eine Textdatei vor, welche eine hohe Anzahl von Datensätzen hat (> 1 Mio.) » Jeder Kunden hat bereits einen eindeutigen, primary Key in der CSV-Datei (fachlicher Schlüssel) » Diese soll in eine bestehende Tabelle importiert werden » In der bestehenden Tabelle sind bereits Daten vorhanden » Die Tabelle soll nach dem Import den Datenbestand der Textdatei 1:1 wiederspiegeln (Full Import) 3
  4. 4. Einfach, aber langsam Datei: Kunden.csv PK ANREDE 11 Herr 22 Frau 33 Frau 44 Firma 55 Firma 66 Firma 77 Herr 88 Herr 99 Frau NAME dsfsdfsd ssdfsdf sdf sdfsd fsdf sdfsdfsdf sdfsfsad sdf sdfsdfsdf Table: KUNDEN VORNAME dsfsdfsd ssdfsdf sdf sdfsd fsdf sdfsdfsdf sdfsfsad sdf sdfsdfsdf STRASSE dsfsdfsd ssdfsdf sdf sdfsd fsdf sdfsdfsdf sdfsfsad sdf sdfsdfsdf PLZ ORT 12323 dsfsdfsd 12332 ssdfsdf 12332 sdf 12332 sdfsd 12332 fsdf 12332 sdfsdfsdf 12332 sdfsfsad 12332 sdf 12332 sdfsdfsdf INDEX PK ANREDE 1 11 Herr 2 22 Frau 3 33 Frau 4 44 Firma 5 55 Firma 6 66 Firma 7 77 Herr 8 88 Herr 9 99 Frau NAME dsfsdfsd ssdfsdf sdf sdfsd fsdf sdfsdfsdf sdfsfsad sdf sdfsdfsdf VORNAME dsfsdfsd ssdfsdf sdf sdfsd fsdf sdfsdfsdf sdfsfsad sdf sdfsdfsdf STRASSE dsfsdfsd ssdfsdf sdf sdfsd fsdf sdfsdfsdf sdfsfsad sdf sdfsdfsdf PLZ ORT TOUCHED 12323 dsfsdfsd 1 12332 ssdfsdf 1 12332 sdf 1 12332 sdfsd 1 12332 fsdf 1 12332 sdfsdfsdf 1 12332 sdfsfsad 1 12332 sdf 1 12332 sdfsdfsdf 1 Flag löschen, ob Datensatz angefasst wurde: update KUNDEN set TOUCHED=0; Datensätze aus Import auf bestehende Datensätze anwenden oder neu einfügen: insert or update KUNDEN (ANREDE, NAME, …, TOUCHED) values (‚HERR‘, ‚dsfsdfds‘, …, 1) where PK=?; commit; Alle Datensätze löschen die nicht angefasst wurden: delete from KUNDEN where TOUCHED=0; 4
  5. 5. 1. Tuningstufe – Blockweises Commit Flag löschen, ob Datensatz angefasst wurde: update KUNDEN set TOUCHED=0; Datensätze aus Import auf bestehende Datensätze anwenden oder neu einfügen, aber nicht jeden Datensatz einzeln committen sondern blockweise: for (i = 0; i < 1000; i++) { insert or update KUNDEN (ANREDE, NAME, …, TOUCHED) values (‚HERR‘, ‚dsfsdfds‘, …, 1) where PK=? } commit; Alle Datensätze löschen die nicht angefasst wurden: delete from KUNDEN where TOUCHED=0; Performancegewinn hängt von Größe des einzelnen Datensatz ab, aber Faktor 10 ist meistens drin! 5
  6. 6. 2. Tuningstufe – Wegwerfen / Neu Tabelle einfach leeren: truncate table KUNDEN; Datensätze aus Import neu einfügen: for (i = 0; i < 1000; i++) { insert KUNDEN (ANREDE, NAME, …, TOUCHED) values (‚HERR‘, ‚dsfsdfds‘, …, 1) } commit; Es entfällt die TOUCHED-Spalte sowie die beiden Operationen zu Beginn und Ende der Importschleife! Trotzdem nur geringer Performancegewinn gegenüber der ersten Tuningstufe! Klappt dafür aber auch mit eingeschränkten DB-Rechten. 6
  7. 7. 3. Tuningstufe – Wegwerfen / Neu Tabelle einfach löschen: drop table KUNDEN; Tabelle neu erstellen: create table KUNDEN { … } Datensätze aus Import einfügen: for (i = 0; i < 1000; i++) { insert KUNDEN (ANREDE, NAME) values (‚HERR‘, ‚dsfsdfds‘) } commit; Index erzeugen: create index … Geht nur wenn man create Rechte auf DB hat (häufig nicht der Fall). 7
  8. 8. Tablespace, Datafiles, Tables and Partitions 8
  9. 9. Tablespace, Datafiles, Tables and Partitions Text File Importscript Partition A Partition B Partition C 9 Partition D
  10. 10. Consider IT done! Unsere Standorte Hauptsitz Bonn Niederlassung Köln Niederlassung Darmstadt Niederlassung Bern Kurfürstenallee 5 53177 Bonn Tel +49 228 – 76 36 31 0 Fax +49 228 –76 36 31 3 Wilhelmstraße 3 51143 Köln Tel +49 22 03 – 91 22 0 Fax +49 22 03 – 91 22 23 Kasinostraße 60 64293 Darmstadt Tel +49 61 51 – 78 90 0 Fax +49 61 51 – 78 90 23 0 Frohbergweg 7 3012 Bern Tel +41 31 – 534 07 06 Fax +41 31 – 536 69 78

×