Olá todos,

Preciso rodar uma função que contém cerca de uns 5 "TRUNCATE" e
seguidos de um respectivo "INSERT/SELECT".

O problema é que a "tabela" de onde eu executo o SELECT é uma view com
várias tabelas e retorna um volume de dados na ordem dos 400.000.000
registros.

Na última execução que fiz para teste eu observei que ela chega a
sugar cerca de 4GB de RAM (dos 8GB disponíveis), quando pára.

Esse é o final do meu LOG quando a função estoura:
    ERRO:  sem memoria
    DETALHE:  Falhou ao requisitar o tamanho 1536.
    CONTEXTO:  comando SQL "INSERT INTO publicacao.extracao_jabot
SELECT nextval('publicacao.extracao_jabot_codespecime_seq') as
codespecime, * FROM jabot.v_extracao_jabot;"

            PL/pgSQL function "extracao" line 13 at execute statement
    LOG:  EOF inesperado durante conexao do cliente


Se eu separar esses vários conjuntos de de TRUNCATE + INSERT/SELECT em
funções separadas e depois criar uma função principal chamando todas
elas, resolveria o problema de falta de memória (estou apostando na
questão do Postgresql considerar toda uma função como uma transação
única - TALVEZ ESTEJA FALANDO BOBAGEM, confirmem se algum puder) ?

Caso a ideia sugerida acima não resolver qual solução vocês me recomendariam?

Grato.


-- 
Welington Rodrigues Braga
    --------------
    Web: http://gtk-br.welrbraga.t5.com.br
    MSN: welrbraga[*]msn·com
    Gtalk: welrbraga[*]gmail·com
    Yahoo / Skype:  welrbraga
    ICQ: 52789331

"Em tudo somos atribulados, porém não angustiados; perplexos, porém
não desanimados; perseguidos, porém não desamparados; abatidos, porém
não destruídos;" - 2Co 4:8,9
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a