vacuumdb

vacuumdb — Limpa e analisa um banco de dados do PostgreSQL

Sinopse

vacuumdb [opção_de_conexão...] [opção...] [ -t | --table tabela [( coluna [,...] )] ] ... [ nome_do_banco_de_dados | -a | --all ]

vacuumdb [opção_de_conexão...] [opção...] [ -n | --schema esquema ] ... [ nome_do_banco_de_dados | -a | --all ]

vacuumdb [opção_de_conexão...] [opção...] [ -N | --exclude-schema esquema ] ... [ nome_do_banco_de_dados | -a | --all ]

Descrição

O vacuumdb é um utilitário para limpar banco de dados do PostgreSQL. O vacuumdb também gera as estatísticas internas usadas pelo otimizador de consultas do PostgreSQL.

O vacuumdb é um invólucro em torno do comando VACUUM do SQL. Não há diferença efetiva entre limpar e analisar bancos de dados por meio desse utilitário, ou por meio de outros métodos de acesso ao servidor.

Opções

O vacuumdb aceita os seguintes argumentos de linha de comando:

-a
--all

Limpa todos os bancos de dados.

--buffer-usage-limit tamanho

Especifica o tamanho do buffer circular da Estratégia de Acesso ao Buffer para uma determinada chamada do vacuumdb. Este tamanho é usado para calcular o número de buffers compartilhados que serão reutilizados como parte dessa estratégia. Veja VACUUM.

[-d] nome_do_banco_de_dados
[--dbname=]nome_do_banco_de_dados

Especifica o nome do banco de dados a ser limpo ou analisado, quando não é usado -a ou --all. Se não for especificado, o nome do banco de dados será lido da variável de ambiente PGDATABASE. Se esta não estiver definida, será usado o nome de usuário especificado para a conexão. O nome_do_banco_de_dados pode ser uma cadeia de caracteres de conexão. Neste caso, os parâmetros da cadeia de caracteres de conexão têm precedência sobre quaisquer opções de linha de comando conflitantes.

--disable-page-skipping

Desativa saltar páginas com base no conteúdo do mapa de visibilidade.

-e
--echo

Mostra os comandos que o vacuumdb gera e envia para o servidor.

-f
--full

Realiza uma limpeza completa.

-F
--freeze

Congela agressivamente as tuplas.

--force-index-cleanup

Sempre remove as entradas de índice que apontam para tuplas mortas.

-j número_de_processos
--jobs=número_de_processos

Executa os comandos de limpeza ou análise em paralelo, executando o número_de_processos comandos simultaneamente. Esta opção pode reduzir o tempo de processamento, porém aumenta a carga no servidor de banco de dados.

O vacuumdb irá abrir o número_de_processos conexões com o servidor de banco de dados, portanto, é necessário que a configuração de max_connections seja alta o suficiente para acomodar todas as conexões.

Note que usar este modo com a opção -f (FULL) pode causar falhas de impasse (deadlock), se determinados catálogos do sistema forem processados em paralelo.

--min-mxid-age mxid_age

Executa os comandos de limpeza ou análise em tabelas com uma idade do identificador multixact de pelo menos mxid_age. Esta definição serve para priorizar as tabelas a serem processadas para evitar o reinício automático do identificador multixact (veja a Multixacts and Wraparound).

Para os propósitos dessa opção, a idade do identificador multixact de uma relação é a maior das idades entre a relação principal e sua tabela TOAST associada, se existir. Uma vez que os comandos emitidos por vacuumdb também processam a tabela TOAST para a relação, se necessário, não é necessário considerá-las separadamente.

--min-xid-age xid_age

Executa os comandos de limpeza ou análise em tabelas com uma idade de identificador de transação de pelo menos xid_age. Esta definição serve para priorizar as tabelas a serem processadas, para evitar o reinício do identificador de transação (veja Prevenção de falhas de recomeço de ID de transação).

Para os propósitos dessa opção, a idade do identificador de transação de uma relação é a maior das idades entre a relação principal e sua tabela TOAST associada, se existir. Uma vez que os comandos emitidos por vacuumdb também processam a tabela TOAST para a relação, se necessário, não é necessário considerá-las separadamente.

--missing-stats-only

Analisa apenas as relações que não possuem estatísticas para uma coluna, expressão de índice ou objeto de estatística estendida. Quando usada com --analyze-in-stages, esta opção impede que o vacuumdb substitua temporariamente as estatísticas existentes por outras geradas com metas de estatísticas inferiores, evitando assim escolhas transitórias piores para o otimizador de consultas.

Esta opção só pode ser usada em conjunto com --analyze-only ou --analyze-in-stages.

Note que --missing-stats-only requer privilégios de SELECT em pg_statistic e pg_statistic_ext_data, que são restritas a superusuários por padrão.

-n esquema
--schema=esquema

Limpa ou analisa todas as tabelas no esquema apenas. Vários esquemas podem ser limpos escrevendo várias vezes a opção -n.

-N esquema
--exclude-schema=esquema

Não limpa nem analisa nenhuma tabela no esquema. Vários esquemas podem ser excluídos escrevendo várias vezes a opção -N.

--no-index-cleanup

Não remove as entradas de índice que apontam para tuplas mortas.

--no-process-main

Salta a relação principal.

--no-process-toast

Salta a tabela TOAST associada à tabela a ser limpa, se houver.

--no-truncate

Não trunca as páginas vazias no final da tabela.

-P processos_trabalhadores
--parallel=processos_trabalhadores

Especifica o número de processos trabalhadores paralelos para a limpeza em paralelo. Permite que a limpeza aproveite várias CPUs para processar índices. Veja o comando VACUUM.

-q
--quiet

Não mostra as mensagens de progresso.

--skip-locked

Salta as relações que não podem ser bloqueadas imediatamente para processamento.

-t tabela [ (coluna [,...]) ]
--table=tabela [ (coluna [,...]) ]

Limpa ou analisa apenas a tabela especificada. Os nomes das colunas podem ser especificados apenas em conjunto com as opções --analyze, ou --analyze-only. Podem ser limpas várias tabelas escrevendo várias opções -t.

Dica

Se forem especificadas as colunas, provavelmente será necessário realizar o escape dos parênteses para o interpretador de comandos. (Veja exemplos abaixo.)

-v
--verbose

Mostra informações detalhadas durante o processamento.

-V
--version

Mostra a versão do vacuumdb, e termina.

-z
--analyze

Calcula também estatísticas para uso pelo otimizador.

-Z
--analyze-only

Apenas calcula as estatísticas para uso do otimizador (sem fazer a limpeza).

--analyze-in-stages

Apenas calcula as estatísticas para uso do otimizador (sem fazer a limpeza), como --analyze-only. Executa três etapas de análise; a primeira etapa utiliza o nível de estatísticas mais baixo possível (veja default_statistics_target) para produzir estatísticas utilizáveis ​​mais rapidamente, e as etapas seguintes constroem as estatísticas completas.

Esta opção só é útil para analisar um banco de dados que no momento não possui estatísticas, ou que possui estatísticas totalmente incorretas como, por exemplo, um banco de dados novo restaurado a partir de uma exportação realizada pelo pg_upgrade. Tenha em mente que executar esta opção em um banco de dados com estatísticas existentes pode fazer com que as escolhas do otimizador de consultas piorem temporariamente devido a níveis de estatísticas baixos para os estágios iniciais.

-?
--help

Mostra a ajuda sobre os argumentos de linha de comando do vacuumdb, e termina.

O vacuumdb também aceita os seguintes argumentos de linha de comando para parâmetros de conexão:

-h hospedeiro
--host=hospedeiro

Especifica o nome de hospedeiro da máquina na qual o servidor está sendo executado. Se começar com uma barra, será usado como o diretório para o soquete de domínio Unix.

-p porta
--port=porta

Especifica a porta TCP, ou extensão de arquivo de soquete de domínio Unix local, na qual o servidor está aguardando conexões.

-U nome_do_usuário
--username=nome_do_usuário

Nome de usuário para se conectar como.

-w
--no-password

Nunca emite uma solicitação de senha. Se o servidor exigir autenticação por senha, e uma senha não estiver disponível por outros meios, como o arquivo .pgpass, a tentativa de conexão irá falhar. Esta opção pode ser útil em tarefas em lote e scripts nos quais nenhum usuário está presente para inserir uma senha.

-W
--password

Força o vacuumdb solicitar uma senha antes de se conectar a um banco de dados.

Esta opção nunca é essencial, porque o vacuumdb solicita automaticamente a senha se o servidor exigir autenticação por senha. No entanto, o vacuumdb irá desperdiçar uma tentativa de conexão ao descobrir que o servidor pede uma senha. Em alguns casos vale a pena digitar -W para evitar a tentativa extra de conexão.

--maintenance-db=nome_do_banco_de_dados

Quando é usada a opção -a/--all, conecte-se a este banco de dados para obter a lista de bancos de dados a serem limpos (vacuum). Se não for especificado, será usado o banco de dados postgres, ou se este não existir, será usado o banco de dados template1. Pode ser uma cadeia de caracteres de conexão. Neste caso, os parâmetros da cadeia de caracteres de conexão têm precedência sobre quaisquer opções de linha de comando conflitantes. Além disso, os parâmetros da cadeia de caracteres de conexão diferentes do próprio nome do banco de dados serão reutilizados ao se conectar aos outros bancos de dados.

Variáveis de ambiente

PGDATABASE
PGHOST
PGPORT
PGUSER

Parâmetros de conexão padrão

PG_COLOR

Especifica se devem ser usadas cores nas mensagens de diagnóstico. Os valores possíveis são always, auto e never.

Este utilitário, como a maioria dos outros utilitários do PostgreSQL, também usa as variáveis de ambiente com suporte pela libpq (veja Variáveis ​​de ambiente).

Diagnósticos

Em caso de dificuldade, veja o comando VACUUM e o utilitário psql para obter informações sobre possíveis problemas e mensagens de erro. O servidor de banco de dados deverá estar ativo no hospedeiro especificado. Além disso, se aplicam todas as configurações de conexão padrão e variáveis de ambiente usadas pela biblioteca cliente libpq.

Exemplos

Para limpar o banco de dados test:

$ vacuumdb test

Para limpar e analisar para o otimizador o banco de dados chamado bigdb:

$ vacuumdb --analyze bigdb

Para limpar uma única tabela chamada foo, em um banco de dados chamado xyzzy, e analisar uma única coluna da chamada bar dessa tabela para o otimizador:

$ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy

Para limpar todas as tabelas nos esquemas foo e bar em um banco de dados chamado xyzzy:

$ vacuumdb --schema='foo' --schema='bar' xyzzy

Veja também

VACUUM