sql >> Base de Datos >  >> RDS >> PostgreSQL

Ajuste del rendimiento y el uso de la memoria de Postgresql en un flujo de trabajo de Python

Mi solución alternativa es cortar putback con una función simple como se propone aquí :

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

y luego

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

Esto funciona, es decir, mantiene el consumo de memoria bajo control, pero no es muy elegante y es más lento que volcar todos los datos a la vez, como suelo hacer.