On 24-09-2014 18:02, Fernando Manchini wrote:
> Boa Tarde,
> 
>      Uma dúvida em relação a criação de uma campo e realizar um update em
> sequencia, numa tabela com 5 milhões de registros, em uma maquina de teste.
> 
>       Comando "ALTER TABLE tabela ADD COLUMN valor int NOT NULL default 0 "
> demora aproximadamente 1 hora.
> 
>       Já o Comandos "UPDATE tabela set valor = valor2 ", está demorando
> aproximadamente 10 horas.
> 
>        Não houve bloqueios.
> 
>        Teria algum motivo para está diferença ?
> 

Sim... são comandos diferentes com implementação interna também diferente.

O ALTER TABLE citado é mais rápido porque requer um bloqueio exclusivo
da tabela, e sua implementação interna recria o(s) datafile(s) da tabela
e índices.

O UPDATE não requer bloqueio exclusivo da tabela eespaços vazios vai
gerar novas páginas com o dado alterado, reutilizar páginas (liberadas
pelo vacuum) ou, se tiver espaço, escrever na mesma página o dado caso
haja espaço.

Não sei se me fiz entender... :-)

Att,

-- 
   Fabrízio de Royes Mello         Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a