Hallo,
Ich habe eine etwas spezielle Frage. ich habe eine Tabelle mit sehr vielen Daten (etwa 8,5 Mio Rows). Ich habe die Tabelle aus einer anderen DB nach Postgres kopiert. Leider ging aus irgendeinem Grund beim kopieren der Primärschlüssel verloren. Nun habe ich versucht einfach den Schlüssel nachträglich mit Hilfe von ügAdmin3 wieder zu erstellen. Hierbei bekommen ich (vermutlich aufgrund der grosse Datenmenge) immer einen Fehler wegen zu wenig Speicherplatz angezeigt.
HINWEIS: ALTER TABLE / ADD PRIMARY KEY erstellt implizit einen Index »pk_trip_all« für Tabelle »trip_all«
FEHLER: Speicher aufgebraucht
DETAIL: Fehler bei Anfrage mit Größe 268435456.
********** Error **********
FEHLER: Speicher aufgebraucht
SQL state: 53200
Detail: Fehler bei Anfrage mit Größe 268435456.
Hat jemand eine Idee wie ich den Schlüssel angelegt bekomme?
Ich habe schon in der postgresql.conf datei die Einträge für shared_buffers und work_mem auf 120000MB erhöht, wobei ich zugeben muss, dass ich nicht so genau weiss was das bewirkt. Aber es geht trotzdem nicht.
Wer hat einen Tipp und kann mir helfen?
Vielen Dank schon einmal für die Hilfe
Gruss
Hanno
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Hallo,
Ich bin immer wieder begeistert wie schnell man hier eine Antwort bekommt. Danke dafür und weiter so.
Der Server hat 3GB RAM.
Ich habe jetzt einmal die Einstellung für maintenance_work_mem angepasst. Nun scheint es zu gehen. Wenigstens bekomme ich keine fehlermeldung mehr, allerdings dauert das jetzt ewig und ich bin nicht sicher ob das Ergebnis noch kommt, da es immer noch rechnet. Heisst das jetzt, wenn man "zuviel MB" in der postgresql.conf für maintenance_work_mem angibt, dann läuft es auf einen Fehler? Weiss jetzt gerade nicht warum es funktioniert wenn ich weniger anstatt mehr angebe.
Jetzt noch eine weitere Frage, die für euch wahrscheinlich sehr einfach ist. Wie kann ich abfragen ob die Werte in einer Spalte wirklich unique sind, also nicht doppelt vorkommen?
Gruss
Hanno
maintenance_work_mem ist der Speicherbereich, der für solche Operationen benutzt wird, work_mem ist was anderes, und shared_buffers wieder was anderes. Warum warst Du nicht zur PGConf, wenn Dich das interessiert? ;-) Also, gib die Begriffe mal in Google ein, das ist alles recht gut dokumentiert und oft genug diskutiert.
siehe castorpJetzt noch eine weitere Frage, die für euch wahrscheinlich sehr einfach ist. Wie kann ich abfragen ob die Werte in einer Spalte wirklich unique sind, also nicht doppelt vorkommen?
Gruss
Hanno
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen