Irgendwie hab ich ja das Gefühl mich zumindest ein bisschen schämen zu müssen. Vor zweieinhalb Jahren habe ich einmal gelernt, was Transaktionen bei Datenbanken sind. Wenn ich das Wissen parat gehabt hätte, wäre der Import schon gestern komplett fertig geworden.
Nach genau 2 Zeilen in der Import-Datei und damit auch 2 Zeilen im osm2sql ist der Import jetzt etwa um Faktor 40 schneller.
Es geht um die Zeile
SET AUTOCOMMIT=0;
ganz am Anfang und die Zeile
COMMIT;
ganz am Schluss. Die sorgen
- für Datenkonsistenz, weil ohne erfolgreichem
COMMITdie ganze Transaktion ein Rollback bekommt, also danach wie nicht ausgeführt aussieht und - für Tempo, weil nicht jede Zeile einzeln committed wird.
Jetzt kann ich beruhigt ins Bett gehen, denn auch der Import von Dateien im zweistelligen Gigabyte-Bereich dürfte in halbwegs realistischer Zeit erfolgen. Ein Nachteil ist, dass diese Funktion bei MySql nur mit der Datenbank-Engine InnoDB funktioniert.
Fehlt noch der Export der jetzt installierten Fremdschlüssel, die erstaunlicherweise alle sofort funktioniert haben, in eine Schema-Datei, dann werd ich wohl mal ein großes Planet-File auf die DB loslassen.


So lustig ist das erstmal nicht – was meinst du wo alles drinsteht, bis das commit kommt?
Aber! und da hast du Recht, es gehört alles(!) in eine Transaktion, besonders dann – wenn man “appendiert” Daten einfügt – sonst Supergau!
Bei “Basis dumps” kann man das auch weglassen, weil wenn etwas schief geht, kann mans ja nochmal machen.
Schau mal auf dem Server, der hat kräftig geswapped heute nacht.
Und zum Schema:
mysqldump -d geostuff > schemaOnly.sql
ist dein Freund.
BTW: afaik haben wir auch ein paar myisam tabell noch da drin?
Ah
und mach mal bei deinen Posts noch die Zeit dazu *G* – dass man sieht wann du ins Bett bist
Naja, ich kann die Uhrzeit auch anzeigen und dann von Hand die Uhrzeit der Veröffentlichung bearbeiten.
Die Speicherauslastung während der Transaktion blieb konstant niedrig. Ich habe es in “top” beobachtet und er schreibt wohl sehr schnell auf die Platte, man kann z.B. mit phpmyadmin auch zuschauen, wie die Zeilenzahl wächst. Wenn ich das richtig verstanden habe, werden die Tabellen aber gelockt und das macht den Geschwindigkeitsvorteil.
Edit: Das Schema hat momentan keine MyIsam-Tabellen, weil die keine Fremdschlüssel beherrschen.
Hi,
super das sich damit mal jemand beschäftigt und auch noch online stellt
Kann man das importscript / DB Schema irgendwo ziehen?
[...] recht schnell als unnötig groß herausgestellt hat. Wirklich ordentlich beschrieben habe ich die dann folgende Lösung bis dato allerdings nicht, deshalb startet heute eine kleine Artikel-Serie zum Thema. [...]