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
signature.asc
Description: OpenPGP digital signature
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
