REINDEX

Name

REINDEX  --  reconstrói índices corrompidos

Synopsis

REINDEX { TABLE | DATABASE | INDEX } nome [ FORCE ]
  

Entradas

TABLE

Reconstrói todos os índices da tabela especificada.

DATABASE

Reconstrói todos os índices do sistema do banco de dados especificado (Os índices das tabelas dos usuários não são incluídos).

INDEX

Reconstrói o índice especificado.

nome

O nome da tabela, banco de dados ou índice a ser reindexado.

FORCE

Força a reconstrução dos índices do sistema. Sem esta palavra chave o comando REINDEX pula os índices do sistema que não estão marcados como inválidos. FORCE é irrelevante para o comando REINDEX INDEX, ou para reindexar índices do usuário.

Saídas

REINDEX

Mensagem retornada se a tabela for reindexada com sucesso.

Descrição

O comando REINDEX é utilizado para reconstruir índices corrompidos. Embora na teoria nunca deve haver esta necessidade, na prática os índices podem se tornar corrompidos devido a erros de programação ou falhas nos equipamentos. O comando REINDEX fornece um método de recuperação.

Se houver a suspeita de que um índice de uma tabela do usuário está corrompido, pode-se simplesmente reconstruir este índice, ou todos os índices da tabela, usando o comando REINDEX INDEX ou REINDEX TABLE.

Note: Outra forma de tratar o problema de índice corrompido em tabela do usuário é simplesmente eliminá-lo e recriá-lo. Pode-se preferir esta forma para manter alguma aparência de uma operação normal em uma tabela. O comando REINDEX obtém um bloqueio exclusivo da tabela, enquanto o comando CREATE INDEX bloqueia a escrita mas não a leitura da tabela.

A situação se torna mais difícil quando é necessário recuperar um índice corrompido de uma tabela do sistema. Neste caso é importante que o servidor efetuando a recuperação não esteja usando nenhum dos índices suspeitos (Sem dúvida, neste tipo de cenário pode acontecer do servidor estar caindo durante a inicialização por depender do índice corrompido). Para executar a recuperação segura, o postmaster deve ser parado e um servidor autônomo (stand-alone) do PostgreSQL deve ser iniciado fornecendo-se as opções de linha de comando -O e -P (estas opções permitem modificar as tabelas do sistema e faz com que os índices do sistema não sejam utilizados, respectivamente). Então se executa o comando REINDEX INDEX, REINDEX TABLE, ou REINDEX DATABASE dependendo de quanto se deseja reconstruir. Na dúvida deve ser utilizado o comando REINDEX DATABASE FORCE para forçar a reconstrução de todos os índices do sistema no banco de dados. Em seguida o servidor autônomo deve ser parado e o postmaster reiniciado.

Como esta é provavelmente a única situação em que a maioria das pessoas usa um servidor autônomo, algumas observações devem ser feitas:

Consulte a página de referência do postgres para obter mais informações.

Utilização

Reconstruir os índices da tabela minha_tabela:

     REINDEX TABLE minha_tabela;
   

Reconstruir um único índice:

    REINDEX INDEX meu_indice;
   

Reconstruir todos os índices do sistema (somente funciona utilizando um servidor autônomo):

    REINDEX DATABASE meu_banco_de_dados FORCE;
   

Compatibilidade

SQL92

Não existe o comando REINDEX no SQL92.