[SP-pm] Tempo (grande!) de liberação de memoria no perl

Eden Cardim edencardim at gmail.com
Wed Sep 29 07:29:58 PDT 2010


2010/9/28 Renato Santos <renato.cron em gmail.com>:
> Entao... começando pelo procedimento do teórico do dedup
>
> Ah cadastros salvos no db, por exemplo nome/email/fone.
>
> 100 terceiros te enviam estes dados do seu clientes, ex: financeiro da
> eletropaulo, marketing da eletropaulo.
>
> Depois de certos tratamentos (externos, feito em outra hora) eh salvo isso
> em outra tabela.
>
> A regra eh: bateu nome/qualquer coisa(tel/mail) eh a msma pessoa.
>
> no $this, $self, ou seja la o nome da.maldita var! Eh populado assim:
>
> $this->{$nm}[(email)]{$email} = id unico desta pessoa/ email
>
> Esse email entre parenteses eh uma const numerica, pra separar o
> email,fone,etc..
>
> Depois feito um loop nos novos registros e eh comparado com este Hash.
>
> Foi feito com hash na memoria, pq, em teoria, eh mais rapido ja ter tudo na
> ram do que fazer um select por linha lida.
>
> Pensando"ah, eh soum selext...."
> Sao 4 tabelas, telefones, emails,enderecos,e a cadastro. 1 pessoa pode ter
> 55 emails (msmo q hj soh carregue 1 por entrada)
> Multiplicando 8milhoes de selects vao gerar mais custo q um com outro where.

Não vejo porque usar perl para esse caso, até onde eu entendi, você só
precisa de uma linha de SQL, que vai ser bem mais eficiente que
qualquer rotina em perl:

insert into dedup (id, email, foo, bar) select id, min(email),
min(foo), min(bar) from dup group by email;

sal a gosto...

-- 
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://blog.edencardim.com/            http://www.shadowcat.co.uk/servers/


More information about the SaoPaulo-pm mailing list