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.
![](https://support.huaweicloud.com/intl/pt-br/dws_faq/public_sys-resources/note_3.0-pt-br.png)
- 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. |
Uso do banco de dados Perguntas frequentes
- Como alterar as colunas de distribuição?
- Como exibir e definir a codificação de caracteres do banco de dados?
- O que devo fazer se o tipo de data for convertido automaticamente para o tipo de carimbo de data/hora durante a criação da tabela?
- Preciso executar VACUUM FULL e ANALYZE em tabelas comuns periodicamente?
- É necessário definir uma chave de distribuição após definir uma chave primária?
- O GaussDB(DWS) é compatível com os procedimentos armazenados do PostgreSQL?
- Quais são tabelas particionadas, partições e chaves de partição?
- Como exportar a estrutura da tabela?
- Como excluir dados da tabela de forma eficiente?
- Como exibir informações de tabela estrangeira?
- Se nenhuma coluna de distribuição for especificada, como os dados serão armazenados?
- Como substituir o resultado nulo por 0?
- Como verificar se uma tabela é armazenada em linha ou em coluna?
- Como consultar as informações sobre tabelas de armazenamento de colunas do GaussDB(DWS)?
- Por que às vezes os índices de consulta do GaussDB(DWS) se tornam inválidos?
- Como usar uma função definida pelo usuário para reescrever a função CRC32()?
- Quais são os esquemas começando com pg_toast_temp* ou pg_temp*?
- Soluções para resultados de consultas inconsistentes do GaussDB(DWS)
- Em quais catálogos do sistema a operação VACUUM FULL não pode ser executada?
- Em quais cenários uma instrução fica "idle in transaction"?
- Como o GaussDB(DWS) implementa a conversão de linha para coluna e de coluna para linha?
- Quais são as diferenças entre restrições únicas e índices únicos?
- What Are the Differences Between Functions and Stored Procedures?
Feedback
Esta página foi útil?
Deixar um comentáriomore