Em 29/11/07, Joao<[EMAIL PROTECTED]> escreveu:
>
>
> Fábio so um errinho de portugues!!
> "Vejamos uma forma de rezover problema de excluir muitos registros
> utilizando o INSERT"
> Oooooooooo leitor chato!!!
> Abraços!!!

Got you! Eu já tinha corrigido antes de você postar.... Como escrevi
isso de manhã antes de sair para o trabalho... dei uma revisada
depois!

Mas é sempre bom saber que tem gente dando uma ajuda para os artigos
ficarem sem estes erros escabrosos.

Obrigado pela força.

[]s
>
> ----- Original Message -----
> From: jota.comm
> To: Comunidade PostgreSQL Brasileira
> Sent: Thursday, November 29, 2007 8:54 AM
> Subject: Re: [pgbr-geral] DELETE LENTO
>
> Olá, Fábio
>
> Acabei de ler o artigo, muito bom!
>
> Abraços
>
>
> Em 29/11/07, Fabio Telles <[EMAIL PROTECTED] > escreveu:
> > Hum... me empolguei um pouco e resolvi escrever sobre o assunto no meu
> > blog. É claro que se trata de um caso particular de DELETE, mas fica a
> > dica:
> >
> >
> http://www.midstorm.org/~telles/2007/11/29/nao-use-delete-use-insert/
> >
> > []s
> >
> > Em 29/11/07, Fabio Telles<[EMAIL PROTECTED]> escreveu:
> > > Em 28/11/07, Brasil Software<
> [EMAIL PROTECTED]> escreveu:
> > > > Pessoal !
> > > > Estou com um grande problema, migrei minha base do firebird para
> > > > postgresql e quando estou deletando um registro o tempo
> > > > chega a ser vergonhoso em relação ao firebird.
> > > >
> > > > Alguem pode me ajudar.
> > > > minha base tem:
> > > > 293 tabelas
> > > > algumas com 2 milhões de registros.
> > > >
> > >
> > > Se você tem que deletar muitos registros a melhor coisa a fazer para
> > > acelerar a operação é utilizar um TRUNCATE. Se você vai excluir poucos
> > > registros, um índice para pesquisar o campo de seleção da cláusula
> > > WHERE deve resolver.
> > >
> > > Ao excluir muitos registros, o DELETE é proibitivo. Você tem três
> > > alternativas interessantes:
> > >
> > > 1) Executar o TRUNCATE e pronto. Isso funciona somente se você quer
> > > excluir TODOS registros da tabela. Nem sempre é o caso!
> > >
> > > 2) Particionar a tabela e depois dar um TRUNCATE apenas na partição
> > > que lhe interessa. Esta é com certeza uma excelente opção para bases
> > > grandes onde você consegue prever uma exclusão de rotina em um grupo
> > > previsível de dados, como "os registros do último trimestre".
> > > Particionar tabelas grandes tem uma série de outros benefícios
> > > colaterais que melhoram substancialmente o desempenho e diminuem o
> > > gasto com os discos.
> > >
> > > 3) Se você não consegue prever o ponto de corte para excluir seus
> > > dados, impedindo-o de particionar sua tabela de forma adequada, há um
> > > último recurso que é utilizar o INSERT no lugar do DELETE:
> > > - Mova os dados que NÃO serão excluÍdos para outra tabela auxiliar com
> > > um CREATE TABLE AS SELECT (...) WHERE (...)
> > > - Dê um TRUNCATE na tabela original.
> > > - Carrege os dados na tabela original com um INSERT (...) SELECT (...)
> > > - Dê um DROP TABLE na tabela auxiliar.
> > >
> > > Uma variação ainda mais rápida, mas mais delicada é você fazer a
> > > tabela auxiliar se transformar em tabela original. Com isto, após
> > > criar a tabela auxiliar, você precisa excluir a tabela original e
> > > renomear a tabela auxiliar. O problema é que você terá depois que
> > > recriar todos os CONSTRAINTS na mão. Em uma rotina bem planejada a
> > > variante é mais rápida ainda.
> > >
> > >
> > > Em ambientes realmente grandes eu vejo as pessoas aplicarem uma
> > > combinação das técnicas 2 e 3. Quando se tem um volume que passa da
> > > casa dos 500GB o particionamento é obrigatório. Quando o número de
> > > linhas a excluir é grande, o DELETE nunca é eficiente, não apenas no
> > > PostgreSQL, mas no Oracle e DB2 também...
> > >
> > > Espero ter ajudado.
> > >
> > > []s
> > > Fábio Telles
> > > --
> > > blog: http://www.midstorm.org/~telles/
> > > e-mail / jabber: [EMAIL PROTECTED]
> > >
> >
> >
> > --
> > blog: http://www.midstorm.org/~telles/
> > e-mail / jabber: [EMAIL PROTECTED]
> > _______________________________________________
> > pgbr-geral mailing list
> > pgbr-geral@listas.postgresql.org.br
> >
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> >
>
>
>
>  ________________________________
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
blog: http://www.midstorm.org/~telles/
e-mail / jabber: [EMAIL PROTECTED]
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a