PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Optimieren der Leistung von Postgresql und der Speichernutzung in einem Python-Workflow

Meine Problemumgehung ist das Slicen von putback mit einer einfachen Funktion wie hier vorgeschlagen :

def chunk(l, n):
    n = max(1, n)
    return [l[i:i + n] for i in range(0, len(l), n)]

und dann

for chunk in chunk(putback, 250000):
    curs.execute("UPDATE table1
                  SET col3 = p.result
                  FROM unnest(%s) p(sid INT, result JSONB)
                  WHERE sid = p.sid", (chunk,))

Das funktioniert, hält also den Speicherbedarf in Grenzen, ist aber nicht sehr elegant und langsamer, als alle Daten auf einmal auszugeben, wie ich es sonst tue.