Preciso executar VACUUM FULL e ANALYZE em tabelas comuns periodicamente?
Sim.
Para tabelas que são frequentemente adicionadas, excluídas ou modificadas, é necessário realizar periodicamente o VACUUM FULL e ANALYZE para recuperar o espaço em disco ocupado por dados atualizados ou excluídos, evitando a deterioração do desempenho causada pelo inchaço dos dados e estatísticas imprecisas.
- Geralmente, você é aconselhado a executar ANALYZE depois que um grande número de operações de adição ou modificação são executadas em uma tabela.
- Depois que uma tabela é excluída, é aconselhável executar VACUUM em vez de VACUUM FULL. No entanto, você pode executar VACUUM FULL em alguns casos específicos, como quando você deseja restringir fisicamente uma tabela para diminuir o espaço ocupado em disco após excluir a maioria das linhas da tabela. Para obter detalhes sobre as diferenças entre VACUUM e VACUUM FULL, consulte VACUUM e VACUUM FULL.
Sintaxe
Realize ANALYZE em uma tabela.
ANALYZE table_name;
Realize ANALYZE em todas as tabelas (tabelas não estrangeiras) no banco de dados.
ANALYZE;
Execute VACUUM em uma tabela.
VACUUM table_name;
Execute VACUUM FULL em uma tabela.
VACUUM FULL table_name;
Para mais detalhes, veja VACUUM e ANALYZE | ANALYSE.
- Se o uso do espaço físico não diminuir após a execução do comando VACUUM FULL, verifique se havia outras transações ativas (iniciadas antes de excluir transações de dados e não terminadas antes de executar VACUUM FULL). Se sim, execute este comando novamente quando as transações tiverem terminado.
- Na versão 8.1.3 ou posterior, VACUUM/VACUUM FULL pode ser chamado no plano de gerenciamento. Para obter detalhes, consulte O&M inteligente.
VACUUM e VACUUM FULL
No GaussDB(DWS), a operação VACUUM é como um aspirador de pó usado para absorver poeira. Aqui, "poeira" significa dados antigos. Se os dados não forem limpos em tempo hábil, o espaço do banco de dados ficará inchado, causando deterioração do desempenho ou até avaria do sistema.
Finalidades de VACUUM:
- Resolver inchaço do espaço: limpar tuplas obsoletas e índices correspondentes, que incluem a tupla (e índice) de uma transação DELETE comprometida, a versão antiga (e índice) de uma transação UPDATE, a tupla inserida (e índice) de uma transação INSERT revertida, a nova versão (e índice) de uma transação UPDATE e a tupla (e índice) de uma transação COPY.
- VACUUM FREEZE: impedir a quebra do sistema causada pelo envolvimento do ID da transação. Ele converte IDs de transação menores que OldestXmin para congelar xids, atualizar relfrozenxids em uma tabela e atualizar relfrozenxids e truncar clogs em um banco de dados
- Atualizar as estatísticas: VACUUM ANALYZE atualiza as estatísticas, permitindo que o otimizador selecione uma maneira melhor de executar instruções SQL.
A instrução VACUUM inclui VACUUM e VACUUM FULL. Atualmente, VACUUM só pode funcionar em tabelas de armazenamento de linha. VACUUM FULL pode ser usado para liberar espaço de tabelas de armazenamento de colunas. Para obter detalhes, consulte a tabela a seguir.
Item |
VACUUM |
VACUUM FULL |
---|---|---|
Limpar espaço |
Se o registro excluído estiver no final de uma tabela, o espaço ocupado pelo registro excluído será liberado fisicamente e devolvido ao sistema operacional. Se os dados não estiverem no final de uma tabela, o espaço ocupado por tuplas mortas na tabela ou índice é definido para estar disponível para reutilização. |
Apesar da posição dos dados excluídos, o espaço ocupado pelos dados é liberado fisicamente e devolvido ao sistema operacional. Quando os dados são inseridos, uma nova página de disco é alocada. |
Tipo de bloqueio |
Bloqueio compartilhado. A operação VACUUM pode ser realizada em paralelo com outras operações. |
Bloqueio exclusivo. Todas as operações baseadas na tabela são suspensas durante a execução. |
Espaço físico |
Não liberado |
Liberado |
ID da transação |
Não recuperado |
Recuperado |
Sobrecarga de execução |
A sobrecarga é baixa e a operação pode ser executada periodicamente. |
A sobrecarga é alta. É aconselhável executá-lo quando o espaço de página do disco ocupado pelo banco de dados estiver próximo do limite e as operações de dados forem poucas. |
Efeito |
Melhora a eficiência das operações na tabela. |
Melhora muito a eficiência das operações na tabela. |