Speicher verbraucht

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

Wie viel RAM hat die Kiste? Bei 256MB für Shared_buffers würde ich mal 1GB vermuten - Du hast aber sicher mehr, oder?


Andreas

Es sind genau 1,5GB. Das läuft auf einer VM, wo es maximal 1,5GB gibt…
Also daran können wir leider nichts ändern.

Bitte zeig doch mal das gesamte Statement, bzw. was genau Du mit “Packe ich diese ganzen Statments hintereinander” meinst.

(übrigens: SQL statements kann man mit dem “Code” Button so formatieren, dass es auch ganz lesbar ist)

Schau mal, ob da vorher Dinge im Log stehen. Evtl. könntest Du an den WAL-Parametern schrauben.
Aber große Datenbanken und schwache VM’s, das ist halt nicht wirklich ein Traumpaar…


Andreas