Autovacuum no PostgreSQL

Autovacuum no PostgreSQL
Vácuo? Sim, o conceito existe nos bancos de dados do Postgres. Quando um registro é excluído no Postgres, uma tupla morta é formada e com a ajuda do comando a vácuo, essas tuplas mortas podem ser removidas. Depois de remover as tuplas mortas, a ação de análise do Postgres é realizada na tabela para atualizar as estatísticas. Para executar o vácuo e analisar as ações coletivamente e automaticamente, o comando Autovacuum do PostGres é utilizado. Ele executa a exclusão e depois atualiza as estatísticas . Para obter uma compreensão mais aprofundada deste utilitário Postgres, este guia é estruturado para obter informações e bons práticos autovacuum no Postgres.

Como funciona o pós -graus de pós -gres

O Autovacuum é o processo de fundo no Postgres e é ativado por padrão. No entanto, você pode obter as configurações do Autovacuum navegando para o PostGresql.conf arquivo.

Conforme discutido anteriormente, o vácuo automático realiza aspirador e análise. Postgres analisa e aspiradores Uma tabela com base no limite descrito abaixo:

Para o limiar automático de aspiração de uma tabela, a seguinte equação é utilizada:

Limiar de vácuo Autovacuum = autovacuum_vacuum_scale_factor * não._of_tuples + autovacuum_vacuum_threshold

E para obter o limite automático de análise, a seguinte equação faz o trabalho:

Limiar de análise autovacuum = autovacuum_analyze_scale_factor * número de tuplas + autovacuum_analyze_threshold

As terminologias usadas nas seções acima são descritas na próxima seção.

Como configurar o pó de pós -graus

A funcionalidade de pó de automóveis de pós -graus depende das configurações e opções disponíveis dentro do PostgreSQL.arquivo conf. Com a ajuda da descrição fornecida abaixo, você pode alterar os parâmetros para ajustar a funcionalidade de vácuo automático.

Os seguintes parâmetros têm o papel principal na definição da política para o pós -gres Autovacuum.

  • Autovacuum: Mostra o status padrão para a chamada de vácuo automático.
  • Autovacuum_Naptime: O valor padrão do parâmetro é o 60S (1min), o que indica a diferença entre cada acordado de vácuo automático.
  • Autovacuum_max_workers: Os processos que são aspirados após a soneca.
  • Autovacuum_vacuum_scale_factor: Este fator direciona o vácuo automático para iniciar o processo quando a porcentagem do valor especificada é alterada. É por padrão definido para 20%, o que significa que o vácuo automático entrará em ação quando 20% das tabelas/registros forem atualizadas.
  • Autovacuum_vacuum_threshold: Este parâmetro garante que o vácuo automático deve ser executado após específico (por padrão, é 50), o número de tabelas é atualizado/alterado.
  • autovacuum_analyze_scale_factor: Este fator refere -se ao processo de análise que um vácuo automático executa. Quando uma porcentagem específica de registros é atualizada/alterada, a tabela executa a análise.
  • Autovacuum_analyze_threshold: Quando números específicos de tabelas encontram atualizações e o limite é atingido, o vácuo automático começa a analisar a tabela, e o valor padrão deste parâmetro é 50.

Para editar o arquivo, você pode abri -lo em um editor Nano usando o comando declarado abaixo (o local do PostgreSQL.O arquivo confy pode variar no seu caso):

$ sudo nano/etc/postgreSql/12/main/postgreSql.conf

Como configurar parâmetros de vácuo automático para uma tabela

O PostGresql.conf O arquivo lida com as alterações globais nos parâmetros de autovacuum. No entanto, você pode ajustar os parâmetros para uma única tabela. Por exemplo, usamos os seguintes parâmetros para o Linuxhint Tabela de banco de dados mydb:

  • Autovacuum_vacuum_scale_factor = 0.2
  • autovacuum_vacuum_threshold = 30
  • autovacuum_analyze_scale_factor = 0.2
  • autovacuum_analyze_threshold = 20

Esses parâmetros serão aprovados com a declaração de tabela de alteração de PowerShell e a tabela de alterar será aplicada na tabela Linuxhint, como mostrado abaixo:

> ALTER TABLE Linuxhint Conjunto (Autovacuum_vacuum_scale_factor = 0.2, autovacuum_vacuum_threshold = 30, autovacuum_analyze_scale_factor = 0.2, autovacuum_analyze_threshold = 20);

Pode ser calculado manualmente inserindo os valores nas equações fornecidas na seção acima e é a seguinte. Suponha que a tabela Linuxhint contenha 10 tuplas:

A operação a vácuo do Autovacuum é calculada como mostrado abaixo. A saída mostra que a operação de vácuo do Autovacuum será realizada quando o número de registros obsoletos atingir 31.

Limiar de vácuo Autovacuum da tabela Linuxhint = (0.2 * 5) + 30 = 31

Da mesma forma, a operação de análise do Autovacuum na tabela Linuxhint será realizada quando o número de inserções/exclusão/atualização for igual ou exceder 21.

Analisão Autovacuum da tabela Linuxhint = (0.2*5) + 20 = 21

Por que o vácuo automático

Olhando para o trabalho e a discussão acima, os seguintes benefícios do vácuo automático podem ser extraídos:

  • O espaço é gerenciado efetivamente excluindo as células mortas
  • O tempo de análise e aspiração é salvo, pois é realizado automaticamente
  • A tabela inchaço não ocorre, pois a exclusão de tuplas mortas ocorre automaticamente e, portanto, a tabela não transborda.
  • Autovacuum pode ser realizado de maneira paralela. Por exemplo, o Autovacuum não trava a tabela como o vácuo manual.

Conclusão

A funcionalidade de vácuo automático do Postgres permite que você execute o vácuo e analise as tabelas de um banco de dados. Mesmo que se possa aspirar e analisar manualmente, o vácuo automatizado fará os dois. Este artigo fornece informações detalhadas sobre a funcionalidade de vácuo automático do Postgres. O Postgres calcula os valores do limite para cada tabela e depois decide se deve aspirar ou analisar essa tabela. Além disso, fornecemos as equações do Postgres para calcular o Vaccum e analisar o limite.