2015-03-24 12:31 GMT-03:00 Zan <[email protected]>:

> ALTER TABLE portal.tb_tarefa
>   ADD COLUMN id_usuario INTEGER;
>
> Esta é uma tabela pequena, com 200 registros, mas o comando não executa.
> Já percebi que algumas vezes quando faço um select em uma tabela com
> transação ativa a tabela fica em "Lock", não deixa eu fazer alteração na
> estrutura.
>
> Como saber quem está travando a tabela de alguma forma para impedir que
> seja feita qualquer alteração na tabela?
>

Um ALTER TABLE para adicionar coluna requer um bloqueio exclusivo
(AccessExclusiveLock) na tabela, que é o mais restritivo. Isso significa
que qualquer transação, mesmo que somente com um SELECT, esteja usando a
tabela, o ALTER TABLE ficará bloqueado, e consequentemente, quando este
pegar o bloqueio, as demais transações que ficarão bloqueadas.

Veja que apesar disso, essa é uma operação quase instância (apenas algumas
atualizações de catálogo), e não há rescrita da tabela, então o tamanho
desta não importa.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a