Ideia? não é melhor gerar um COPY ? Se der erro, remove a linha, tenta novamente... etc..
só não faz isso com muitos registros de uma vez (se for provavel ter um erro) pois isso no postgres gera um LOG imenso de dead-rows. 2011/11/11 Stanislaw Pusep <creakt...@gmail.com> > Trazendo pra cá a conversa com @edenc no Twitter :) > Observei que um script meu (bastante simples) estava torrando 6GB de RAM > mais 5GB de swap... > Consegui isolar o seguinte trecho porcalhão: > > my $images = $schema->resultset('Image'); > ...; > while (my $url = <>) { > ...; > $images->find_or_create( > { > sampler_uid => $obj->uid, > url => $url, > }, > { key => 'images_url_idx' } > ); > } > > Curiosamente, posso substituir find_or_create() por apenas find() e o > resultado é o mesmo: acréscimo de alguns KB no processo para cada operação. > Como tenho meio milhão de registros, deu no que deu. > Tive que trocar por isso daqui e funcionou perfeitamente: > > my $images_insert = $schema->storage->dbh->prepare( > 'INSERT INTO images (sampler_uid, url) VALUES (?, ?)' > ); > ...; > while (my $url = <>) { > ...; > eval { > $images_insert->execute($obj->uid, $url); > }; > } > > Antes disso, suspeitei que tivesse algo a ver com AutoCommit e encapsulei > com txn_do() a cada 100 registros; deu na mesma. > Também suspeitei do prepare_cached(), porém isso não faz o menor sentido, > pois o statement é o mesmo para todas as queries. Anyway, tentei > limpar $schema->storage->dbh->{CachedKids} periodicamente e também não > adiantou. > Por fim, tentei ver o que acontece xeretando através do Devel::Size. De > fato, o objeto do ResultSet cresce indefinidamente. Porém todas as minhas > tentativas de serializar o mesmo e descobrir o que está acontecendo via > diff foram frustradas :( > Any ideas? > > ABS() > > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > -- Saravá, Renato CRON Santos http://www.renatocron.com/blog/ @renato_cron <http://twitter.com/#!/renato_cron>
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer