Estou executando o PG 8.4
Eu tinha uma tabela com cerca de 20 mil registros. Qualquer consulta acessando esta tabela com mais de 1 registro (por exemplo, joins) seria muito, muito lenta. Mesmo uma contagem levaria cerca de 20 segundos.
As estatísticas mostraram 5 milhões de live_tuples.
Tentei vácuo, análise de vácuo e, no final, vácuo completo. Nada muda em termos de velocidade. E as estatísticas ainda mostravam a mesma coisa.
Acabei criando uma nova tabela, inseri todos os registros na nova tabela e derrubei/renomeei a antiga.
A nova mesa agora funciona muito rápido.
Alguma ideia de:
1) Qual teria sido o manejo mais correto? Estou procurando uma maneira melhor de fazer isso, pois um dos efeitos colaterais é que as exibições que apontavam para a tabela foram modificadas pela instrução "alter table rename to" e, sem o meu conhecimento, as exibições apontavam para o antigo mesa para 2 dias!
2) Por que isso aconteceria em primeiro lugar?
1) Eu teria tentado agrupar seguido de análise. Minha única hesitação é que não tenho 100% de certeza do que aconteceu aqui. É possível que também tenha havido alguma corrupção de índice? Reindex pode ter ajudado? Dado que as entradas de estatísticas estavam erradas, é possível que algo estivesse corrompido em outro lugar em relação ao OID da relação?
2) Não faço ideia. Eu nunca vi nada assim antes. Eu precisaria de muito mais informações de diagnóstico, mesmo para arriscar um palpite. Se acontecer novamente valeria a pena saber o tamanho físico da mesa, por exemplo.
Editar: Lembrando que 8.4 ainda tinha max_fsm_pages, se isso fosse muito baixo entre os vácuos, isso poderia causar esse tipo de inchaço na tabela.
Edit2: Vácuo cheio, no entanto, deveria ter sido capaz de lidar com o inchaço devido a max_fsm_pages, pelo menos na minha experiência, sugerindo novamente para mim que algo mais profundo estava errado.
Acho que finalmente encontrei uma resposta para 1) Qual teria sido o tratamento mais correto?