PostgreSQL 14 aqui.
No momento, estou executando um comando ALTER em uma mesa enorme. Já está funcionando há 13 horas e continua funcionando. Está ativo. Existe uma maneira de obter uma indicação de quando isso deve terminar?
PostgreSQL 14 aqui.
No momento, estou executando um comando ALTER em uma mesa enorme. Já está funcionando há 13 horas e continua funcionando. Está ativo. Existe uma maneira de obter uma indicação de quando isso deve terminar?
Primeiro, verifique se o
ALTER TABLE
não está bloqueado:Se não houver bloqueio indicado, a instrução está realmente em execução.
Infelizmente, não há uma maneira fácil de acompanhar o progresso de um
ALTER TABLE
que reescreve a tabela. Você pode olhar para o antigo e o novo arquivo de dados e comparar o tamanho e fazer suas suposições a partir disso, mas é complicado pelo fato de que todos os índices também são recriados, então é difícil saber o que comparar com isso.Você pode descobrir o arquivo de dados antigo para a tabela assim:
Da mesma forma, você pode localizar os arquivos de dados para índices.
Para ver os arquivos de dados, faça login na máquina do banco de dados, mude para o diretório de dados e execute
onde
12345/54321
é a saída da consulta acima. Isso mostrará o tamanho da sua tabela ou índice antigo.para encontrar o arquivo que está sendo gravado no momento, você pode consultar o arquivo com o registro de data e hora da modificação mais recente:
Se esse arquivo for
98765.7
, esse é o oitavo segmento do arquivo 98765, portanto, a tabela/índice que está sendo gravada tem atualmente entre 7 e 8 GB de tamanho.Desculpe, isso é o melhor que posso lhe dar.