Ich habe mir eine Tabelle von Messdaten aus mehreren anderen tabellen zusammenstellen wollen. Da ich aber gemerkt habe, dass dies mit zunehmender Tabellengröße immer langsamer wird, habe ich nun erstmal 10 unterschiedliche Tabellen erstellt und ich dachte mir die könnte man sicher anschließend einfach aneinander hängen.
Anschließend habe ich alle Tabellen exportiert (was sehr schnell geht) und wollte sie nun aus den Dateien in eine Tabelle importieren (mit Copybefehl), allerdings scheint das auch sehr lange zu brauchen, da nach einigen Stunden immer noch kein Import vollständig ist.
Ist es normal, dass ein importieren einer 5 gbyte datei so lange dauert? (Ich versuche es mit PGAdmin, was stundenlang den ganzen Rechner lahmlegt)
Kennt jemand irgend eine schnellere Methode? die Tabelle hat im Endeffekt mehrere 100 Millionen Zeilen, aber dafür muss es doch einfache Möglichkeiten geben diese Daten zu importieren ohne wochenlang zu warten.
habe ich nun erstmal 10 unterschiedliche Tabellen erstellt und ich dachte mir die könnte man sicher anschließend einfach aneinander hängen.
Anschließend habe ich alle Tabellen exportiert (was sehr schnell geht) und wollte sie nun aus den Dateien in eine Tabelle importieren (mit Copybefehl), allerdings scheint das auch sehr lange zu brauchen, da nach einigen Stunden immer noch kein Import vollständig ist.
Ist es normal, dass ein importieren einer 5 gbyte datei so lange dauert? (Ich versuche es mit PGAdmin, was stundenlang den ganzen Rechner lahmlegt)
Keine Ahnung, was PGAdmin da vielleicht mit macht - vielleicht arbeitet es als ‘Man in the middle’. Zumindest für komplexere Aktionen ist das CLI zu empfehlen.
Hast Du Indexe und TRIGGER aktiv?
Kennt jemand irgend eine schnellere Methode? die Tabelle hat im Endeffekt mehrere 100 Millionen Zeilen, aber dafür muss es doch einfache Möglichkeiten geben diese Daten zu importieren ohne wochenlang zu warten.
Ich habe leider bisher nur mit PGADMIN gearbeitet. In PGadmin werden mir keine Indizes oder Trigger angezeigt. wie man sie allgemein aktiv oder inaktiv setzt weiß ich nciht.
Wollte jetzt gerade den copy befehl in der psql console ausführen, aber meine Relation “measurement” wird nicht gefunden. Muss man dort noch irgendeinen Pfad für die Tabelle angeben ?
In PGAdmin ist sie unter myDB/Schemata/public/ zu finden.
Ähm, ja. Du hast eine Tabelle mit wohl einigen Millionen Datensätzen, laut PGAdmin ohne Indexe und wunderst Dich, daß Abfragen mit der Zeit langsam werden. Oder versteh ich grad was falsch?
Gut, wenn keine Indexe und Trigger da sind, brauchst die auch nicht auszuschalten. Was Du auch nicht brauchst: Dich über schlechte Performance wundern …
Wollte jetzt gerade den copy befehl in der psql console ausführen, aber meine Relation “measurement” wird nicht gefunden. Muss man dort noch irgendeinen Pfad für die Tabelle angeben ?
In PGAdmin ist sie unter myDB/Schemata/public/ zu finden.
Sry, dass ich so Anfängerfragen stellen muss.
PGAdmin verwendet gern mal Großbuchstaben bei der Anlage von Tabellen. Wenn Du dann in psql measurement oder “measurement” verwendest, wird die Tabelle aber mit Kleinbuchstaben gesucht.
Wie heißt denn die Tabelle nun genau?
Nein, bei Abfragen war ich noch nicht. Ich wollte mir die Tabelle über INSERT Befehle zunächst zusammenbauen, das ist immer langsamer geworden. Tritt dieses Problem auch beim insert auf?
Mittlerweile konnte ich den copy befehl in der psql console ausführen. Aber eine etwa 1 GB große Datei läuft gerade schon 30 Minuten und ich weiß noch nicht wann sie ganz eingelesen ist, kann evtl. noch sehr lange dauern.
Sehe da noch keine Verbesserung
Nein. Sind das sehr viele Einzel-Inserts? Dann fasse diese in einer Transaktion zusammen. Hast Du die Config von PG an die Hardware angepaßt?
Mittlerweile konnte ich den copy befehl in der psql console ausführen. Aber eine etwa 1 GB große Datei läuft gerade schon 30 Minuten und ich weiß noch nicht wann sie ganz eingelesen ist, kann evtl. noch sehr lange dauern.
Sehe da noch keine Verbesserung > >
Nun ja, je nach Hardware, Optimierung, Tabellendesign etc. kann das halt dauern…
Depends. Da sind die Daten faktisch auch nur als CSV. Aber wenn es mehrere Tabellen sind, und die Dumps im Custom-Format vorliegen, kannst Du mehrere parallele Jobs starten.