PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Ajustando o desempenho do Postgresql e o uso de memória em um fluxo de trabalho python


Minha solução é cortar putback com uma função simples como proposta aqui :
def chunk(l, n):
    n = max(1, n)
    return [l[i:i + n] for i in range(0, len(l), n)]

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

Isso funciona, ou seja, mantém o consumo de memória sob controle, mas não é muito elegante e mais lento do que despejar todos os dados de uma só vez, como costumo fazer.