vacuumdb — recolecta basura y analiza una base de datos PostgreSQL
vacuumdb [connection-option...] [option...]
[
-t | --table
table
[( column [,...] )]
]
... [
dbname | -a | --all
]
vacuumdb [connection-option...] [option...]
[
-n | --schema
schema
]
... [
dbname | -a | --all
]
vacuumdb [connection-option...] [option...]
[
-N | --exclude-schema
schema
]
... [
dbname | -a | --all
]
vacuumdb es una utilidad para limpiar una base de datos PostgreSQL. vacuumdb también generará estadísticas internas utilizadas por el optimizador de consultas de PostgreSQL.
vacuumdb es un envoltorio («wrapper») del comando SQL
VACUUM. No hay diferencia efectiva entre vaciar y analizar
bases de datos a través de esta utilidad y a través de otros métodos para acceder al servidor.
vacuumdb acepta los siguientes argumentos de línea de comandos:
-a--allVacía todas las bases de datos.
--buffer-usage-limit sizeEspecifica el tamaño del búfer en anillo de la estrategia de acceso al búfer para una invocación determinada de vacuumdb. Este tamaño se utiliza para calcular el número de búferes compartidos que se reutilizarán como parte de esta estrategia. Consulta la VACUUM.
[-d] dbname[--dbname=]dbname
Especifica el nombre de la base de datos que se va a limpiar o analizar, cuando no se utiliza
-a/--all. Si no se especifica, el nombre de la base de datos se lee
de la variable de entorno PGDATABASE. Si esta no está configurada, se utiliza el nombre
de usuario especificado para la conexión. El parámetro dbname puede ser una
cadena de conexión. Si es así, los parámetros de la cadena de
conexión anularán cualquier opción de línea de comandos en conflicto.
--disable-page-skippingDesactiva la omisión de páginas en función del contenido del mapa de visibilidad.
-e--echoMuestra los comandos que vacuumdb genera y envía al servidor.
-f--fullRealiza un vaciado completo («full vacuuming»).
-F--freeze«Congela» («freeze») tuplas de forma agresiva.
--force-index-cleanupSiempre elimina las entradas del índice que apuntan a tuplas muertas.
-j njobs--jobs=njobs
Ejecuta los comandos vacuum o analyze en paralelo ejecutando simultáneamente
njobs comandos. Esta opción puede reducir el
tiempo de procesamiento, pero también aumenta la carga en el servidor de la base de datos.
vacuumdb abrirá njobs
conexiones a la base de datos, así que asegúrate de que tu configuración de
max_connections sea lo suficientemente alta como para admitir todas las conexiones.
Ten en cuenta que usar este modo junto con la opción -f (FULL)
puede causar fallas de bloqueo mutuo («deadlock») si ciertos catálogos del sistema se procesan en paralelo.
--min-mxid-age mxid_age
Solo ejecuta los comandos vacuum o analyze en tablas con una edad de ID de multixact de al menos
mxid_age. Esta configuración es útil para priorizar
las tablas a procesar para evitar el desbordamiento («wraparound») del ID de multixact (consulta la
Section 24.1.5.1).
A efectos de esta opción, la edad del ID de multixact de una relación es la mayor de las edades de la relación principal y su tabla TOAST asociada, si existe. Dado que los comandos emitidos por vacuumdb también procesarán la tabla TOAST para la relación si es necesario, no es necesario considerarla por separado.
--min-xid-age xid_age
Solo ejecuta los comandos vacuum o analyze en tablas con una edad de ID de transacción de al menos
xid_age. Esta configuración es útil para priorizar
las tablas a procesar para evitar el desbordamiento («wraparound») del ID de transacción (consulta la
Section 24.1.5).
A efectos de esta opción, la edad del ID de transacción de una relación es la mayor de las edades de la relación principal y su tabla TOAST asociada, si existe. Dado que los comandos emitidos por vacuumdb también procesarán la tabla TOAST para la relación si es necesario, no es necesario considerarla por separado.
--missing-stats-only
Solo analiza las relaciones a las que les falten estadísticas para una columna, expresión de índice
o estructura de estadísticas extendidas. Cuando se usa con --analyze-in-stages,
esta opción evita que vacuumdb reemplace temporalmente las estadísticas
existentes con las generadas con objetivos de estadísticas más bajos, evitando así decisiones temporalmente
peores del optimizador de consultas.
Esta opción solo se puede utilizar junto con --analyze-only o
--analyze-in-stages.
Ten en cuenta que --missing-stats-only requiere privilegios de SELECT
en pg_statistic y
pg_statistic_ext_data,
que están restringidos a los superusuarios de forma predeterminada.
-n schema--schema=schema
Limpia o analiza todas las tablas en schema únicamente.
Se pueden vaciar múltiples esquemas escribiendo múltiples opciones -n.
-N schema--exclude-schema=schema
No limpia ni analiza ninguna tabla en schema.
Se pueden excluir múltiples esquemas escribiendo múltiples opciones -N.
--no-index-cleanupNo elimina las entradas del índice que apuntan a tuplas muertas.
--no-process-mainOmite la relación principal.
--no-process-toastOmite la tabla TOAST asociada con la tabla a vaciar, si la hay.
--no-truncateNo trunca las páginas vacías al final de la tabla.
-P parallel_workers--parallel=parallel_workersEspecifica el número de procesos de trabajo paralelos («parallel workers») para el vaciado en paralelo. Esto permite que el vaciado aproveche múltiples CPU para procesar índices. Consulta la VACUUM.
-q--quietNo muestra mensajes de progreso.
--skip-lockedOmite las relaciones que no se pueden bloquear inmediatamente para su procesamiento.
-t table [ (column [,...]) ]--table=table [ (column [,...]) ]
Limpia o analiza table únicamente. Los nombres de las columnas
se pueden especificar solo junto con las opciones --analyze o --analyze-only.
Se pueden vaciar múltiples tablas escribiendo múltiples opciones -t.
Si especificas columnas, probablemente tendrás que escapar los paréntesis para que no los interprete la shell. (Consulta los ejemplos a continuación).
-v--verboseImprime información detallada durante el procesamiento.
-V--versionImprime la versión de vacuumdb y sale.
-z--analyzeTambién calcula estadísticas para uso del optimizador.
-Z--analyze-onlySolo calcula estadísticas para uso del optimizador (sin vacuum).
--analyze-in-stages
Solo calcula estadísticas para uso del optimizador (sin vacuum), como --analyze-only.
Ejecuta tres etapas de análisis; la primera etapa utiliza el objetivo de estadísticas más bajo posible
(consulta la default_statistics_target) para producir estadísticas utilizables
más rápido, y las etapas subsiguientes construyen las estadísticas completas.
Esta opción solo es útil para analizar una base de datos que actualmente no tiene estadísticas o que tiene
estadísticas totalmente incorrectas, como si se acabara de poblar a partir de un volcado restaurado o por
pg_upgrade. Ten en cuenta que ejecutar con esta opción en una base de datos con estadísticas
existentes puede hacer que las decisiones del optimizador de consultas empeoren temporalmente debido a los
bajos objetivos de estadísticas de las primeras etapas.
-?--helpMuestra la ayuda sobre los argumentos de línea de comandos de vacuumdb y sale.
vacuumdb también acepta los siguientes argumentos de línea de comandos para los parámetros de conexión:
-h host--host=hostEspecifica el nombre de host de la máquina en la que se está ejecutando el servidor. Si el valor comienza con una barra diagonal, se utiliza como el directorio para el socket de dominio Unix.
-p port--port=portEspecifica el puerto TCP o la extensión del archivo de socket de dominio Unix local en el que el servidor está escuchando conexiones.
-U username--username=usernameNombre de usuario con el que conectarse.
-w--no-password
Nunca solicita una contraseña. Si el servidor requiere autenticación de contraseña y no hay una contraseña
disponible por otros medios, como un archivo .pgpass, el intento de conexión fallará.
Esta opción puede ser útil en trabajos por lotes («batch jobs») y scripts donde no hay ningún usuario presente
para ingresar una contraseña.
-W--passwordFuerza a vacuumdb a solicitar una contraseña antes de conectarse a una base de datos.
Esta option nunca es indispensable, ya que vacuumdb solicitará automáticamente una
contraseña si el servidor exige autenticación por contraseña. Sin embargo, vacuumdb
desperdiciará un intento de conexión para descubrir que el servidor requiere una contraseña. En algunos casos,
vale la pena escribir -W para evitar el intento de conexión adicional.
--maintenance-db=dbname
Cuando se utiliza -a/--all, se conecta a esta base de datos para recopilar la
lista de bases de datos a vaciar. Si no se especifica, se utilizará la base de datos postgres,
o si no existe, se utilizará template1. Puede ser una cadena
de conexión. Si es así, los parámetros de la cadena de conexión anularán cualquier opción de línea de
comandos en conflicto. Además, los parámetros de la cadena de conexión distintos del propio nombre de la base
de datos se reutilizarán al conectarse a otras bases de datos.
PGDATABASEPGHOSTPGPORTPGUSERParámetros de conexión predeterminados
PG_COLOR
Especifica si se debe usar color en los mensajes de diagnóstico. Los valores posibles son always,
auto y never.
Esta utilidad, al igual que la mayoría de las demás utilidades de PostgreSQL, también utiliza las variables de entorno admitidas por libpq (consulta la Section 32.15).
En caso de dificultad, consulta la VACUUM y la psql para obtener discusiones sobre problemas potenciales y mensajes de error. El servidor de la base de datos debe estar ejecutándose en el host objetivo. Además, se aplicará cualquier configuración de conexión predeterminada y variable de entorno utilizada por la biblioteca cliente libpq.
Para limpiar la base de datos test:
$vacuumdb test
Para limpiar y analizar para el optimizador una base de datos llamada bigdb:
$vacuumdb --analyze bigdb
Para limpiar una sola tabla foo en una base de datos llamada xyzzy, y analizar
una sola columna bar de la tabla para el optimizador:
$vacuumdb --analyze --verbose --table='foo(bar)' xyzzy
Para limpiar todas las tablas en los esquemas foo y bar en una base de datos
llamada xyzzy:
$vacuumdb --schema='foo' --schema='bar' xyzzy