vacuumdb — Limpa e analisa um banco de dados do PostgreSQL
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
]
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.
O vacuumdb aceita os seguintes argumentos de linha de comando:
-a--allLimpa todos os bancos de dados.
--buffer-usage-limit tamanhoEspecifica 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-skippingDesativa saltar páginas com base no conteúdo do mapa de visibilidade.
-e--echoMostra os comandos que o vacuumdb gera e envia para o servidor.
-f--fullRealiza uma limpeza “completa”.
-F--freeze“Congela” agressivamente as tuplas.
--force-index-cleanupSempre 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-cleanupNão remove as entradas de índice que apontam para tuplas mortas.
--no-process-mainSalta a relação principal.
--no-process-toastSalta a tabela TOAST associada à tabela a ser limpa, se houver.
--no-truncateNão trunca as páginas vazias no final da tabela.
-P processos_trabalhadores--parallel=processos_trabalhadoresEspecifica 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--quietNão mostra as mensagens de progresso.
--skip-lockedSalta 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.
Se forem especificadas as colunas, provavelmente será necessário realizar o escape dos parênteses para o interpretador de comandos. (Veja exemplos abaixo.)
-v--verboseMostra informações detalhadas durante o processamento.
-V--versionMostra a versão do vacuumdb, e termina.
-z--analyzeCalcula também estatísticas para uso pelo otimizador.
-Z--analyze-onlyApenas 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.
-?--helpMostra 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=hospedeiroEspecifica 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=portaEspecifica 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árioNome 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--passwordForç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.
PGDATABASEPGHOSTPGPORTPGUSERParâ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).
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.
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