Configuración de parámetros del servidor de vaciado automático

Completado

El proceso de vacío se configura mediante los parámetros del servidor autovacuum que le permiten optimizar el proceso de vacío para su carga de trabajo. En Azure Portal, elija el servidor de Azure Database for PostgreSQL y seleccione Parámetros del servidor en el menú de la izquierda. En la barra de búsqueda, escriba autovacuum. Como alternativa, podemos usar SQL para consultar las vistas de catálogo del sistema para buscar la configuración actual de autovacuum mediante la consulta siguiente.

SELECT *
FROM pg_settings 
WHERE "name" LIKE '%autovacuum%';
Nombre de parámetro Valor predeterminado Descripción
autovacuum ACTIVAR Habilita o deshabilita el proceso de vaciado automático del servidor. El vaciado automático siempre debe estar habilitado.
autovacuum_analyze_scale_factor 0,1 Especifica una fracción de la tabla que se va a agregar a autovacuum_vacuum_threshold cuando se decide activar una operación de vaciado. Por ejemplo, "0.2" es el 20 % del tamaño de la tabla.
autovacuum_analyze_threshold 50 Número de filas insertadas, actualizadas o eliminadas necesarias para desencadenar el proceso analizar para cualquier tabla.
autovacuum_freeze_max_age 200000000 Antigüedad máxima (en transacciones) antes de desencadenar el vaciado automático en una tabla para impedir el ajuste del identificador de transacción.
autovacuum_max_workers 3 Número máximo de procesos de vaciado automático que se ejecutan en cualquier momento, excepto el iniciador del vaciado automático.
autovacuum_multixact_freeze_max_age 400000000 Antigüedad máxima (en multixact) antes de desencadenar el vaciado automático en una tabla para impedir el ajuste de multixact.
autovacuum_naptime 60 s Retraso entre procesos de vaciado automático en una base de datos. En cada ronda, el demonio examina la base de datos y emite los comandos VACUUM y ANALYZE según sea necesario para las tablas en esa base de datos.
autovacuum_vacuum_cost_limit -1 Coste máximo de las operaciones de vaciado automático. Si se especifica -1, que es el valor predeterminado, se usará el valor normal vacuum_cost_limit. Con más de un trabajo, el valor se distribuye proporcionalmente entre los trabajos de autovacuum en ejecución. La suma de cada trabajo no puede superar el valor de esta variable.
autovacuum_vacuum_insert_threshold 1000 Número de filas insertadas que desencadena el vacío para cualquier tabla.
autovacuum_vacuum_scale_factor 0,2 Se usa con autovacuum_vacuum_threshold. Fracción de una tabla que se usa para decidir si se debe desencadenar un vaciado.
autovacuum_vacuum_threshold 50 Número mínimo de filas actualizadas, insertadas o eliminadas para desencadenar el vaciado de una tabla.
autovacuum_vacuum_insert_scale_factor 0,2 Especifica una fracción del tamaño de la tabla que se va a agregar a autovacuum_vacuum_insert_threshold para desencadenar el proceso de vaciado.
autovacuum_work_mem -1 KB Memoria máxima que puede usar cada proceso de autovacuum.
log_autovacuum_min_duration -1 Tiempo en milisegundos, registrado por las acciones de autovacuum.

El proceso de vaciado no debe ejecutarse con demasiada frecuencia o con demasiado poca frecuencia. La frecuencia óptima depende de la carga de trabajo. Pruebe cada uno de los parámetros de vaciado automático para descubrir qué funciona mejor con la carga de trabajo. El coste del proceso de vaciado incluye lo siguiente:

  • Las páginas de datos se bloquean cuando se ejecuta el vaciado.
  • El proceso de vaciado consume tiempo de proceso y memoria.

Optimización del vaciado en el nivel de tabla

En Azure Database for PostgreSQL, los parámetros de vaciado automático se pueden establecer en el nivel de tabla. Cuando algunas tablas se actualizan más que otras, puede mejorar el rendimiento. Este es un ejemplo de configuración del vaciado automático en el nivel de tabla:

ALTER TABLE mytable SET (autovacuum_vacuum_threshold = 1000);
​ALTER TABLE mytable SET (autovacuum_vacuum_scale_factor = 0.1);
ALTER TABLE mytable SET (autovacuum_vacuum_cost_limit = 1000);
ALTER TABLE mytable SET (autovacuum_vacuum_cost_delay = 10);

En el nivel de tabla, el vaciado automático es un proceso sincrónico. Cuanto mayor sea el porcentaje de tuplas inactivas que tiene una tabla, mayor será el "costo" que incurre el proceso de autovacuum.

En el caso de las tablas con una alta tasa de actualizaciones, considere la posibilidad de dividir la tabla en varias tablas. Esta división ayuda a paralelizar el autovacuum y a reducir el "costo" de cualquier tabla. También puede aumentar el número de trabajos paralelos de vaciado automático.