Hallo zusammen,
ich hab ein Problem…ich habe zwei Tabellen mit ca. 40 Millionen Einträgen.
Um mit diesen besser Arbeiten zu können, erzeuge ich Tabellen die diese Einträge zusammenfassen und aufaddieren.
Setze ich die SQL Statments nacheinander ab, dann klappt das Ganze. Packe ich diese ganzen Statments hintereinander in eine Funktion bricht sie nach ca. 20 Minuten ab mit:
FEHLER: Speicher aufgebraucht
SQL state: 53200
Detail: Fehler bei Anfrage mit Größe 2040. (wobei hier auch schon Größe 20 stand)
Als Beispiel was dort gemacht wird:
CREATE TABLE “AggregationTabelle1” as (
SELECT
id,
id2,
count(*) as summe
FROM
public.“Tabelle1”
GROUP BY
id,
id2);
Zudem werden die Aggregationen gedroppet, falls sie es schon gibt…
Meine Auszug aus meiner postgresql.conf:
- Memory -
shared_buffers = 256MB (habe ich erhöht von 32MB, hat aber nicht geholfen) # min 128kB
(Restliche Parameter sind auskommentiert)
Habt ihr eine Idee, wie ich das hinkriege? Ohne doch wieder für alles einzelne Funktionen zu schreiben?
Ich vermute, dass Transaktionsmanagement ist das Problem. Da er ja im schlimmsten Fall die Transaktion zurückrollen muss.
Kann ich ihm irgendwie vorher sagen Commit? Oder an welchem Parameter könnte ich stellen?
Vielen Dank und viele Grüße
Neo