PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Réglage des performances de Postgresql et de l'utilisation de la mémoire dans un workflow Python

Ma solution de contournement est de découper putback avec une fonction simple comme proposé ici :

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

puis

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,))

Cela fonctionne, c'est-à-dire qu'il contrôle l'empreinte mémoire, mais n'est pas très élégant et plus lent que de vider toutes les données en même temps, comme je le fais habituellement.