Autovacuum en PostgreSQL

Autovacuum en PostgreSQL
Vacío? Sí, el concepto existe en las bases de datos de Postgres. Cuando se elimina un registro en Postgres, se forma una tupla muerta y con la ayuda del comando de vacío, estas tuplas muertas se pueden eliminar. Después de eliminar las tuplas muertas, la acción de análisis de Postgres se realiza en la tabla para actualizar las estadísticas. Para realizar el vacío y analizar las acciones de manera colectiva y automática, se utiliza el comando autovacuum de Postgres. Realiza tanto la eliminación como actualiza las estadísticas . Para obtener una comprensión más profunda de esta utilidad de Postgres, esta guía está estructurada para obtener información y un buen autovacuum en Postgres.

Cómo funciona Postgres Auto Vacuum

El autovacuum es el proceso de fondo en Postgres y está habilitado de forma predeterminada. Sin embargo, puede obtener la configuración de Autovacuum navegando al postgresql.confusión archivo.

Como se discutió anteriormente, el vacío automático realiza la aspiradora y el análisis. Postgres analiza y aspira una tabla basada en el umbral que se describe a continuación:

Para el umbral de aspiración automática de una tabla, se utiliza la siguiente ecuación:

Umbral de vacío Autovacuum = autovacuum_vacuum_scale_factor * no._OF_TUPLES + Autovacuum_vacuum_threshold

Y para obtener el umbral de análisis automático, la siguiente ecuación hace el trabajo:

Autovacuum analizar umbral = autovacuum_analyze_scale_factor * Número de tuplas + autovacuum_analyze_threshold

Las terminologías utilizadas en las secciones anteriores se describen en la próxima sección.

Cómo configurar el vacío automático de Postgres

La funcionalidad de vacío automático de Postgres depende de la configuración y las opciones disponibles dentro del PostgreSQL.archivo conf. Con la ayuda de la descripción proporcionada a continuación, puede cambiar los parámetros para ajustar la funcionalidad de vacío automático.

Los siguientes parámetros tienen el papel clave en la definición de la política para Postgres Autovacuum.

  • autovacuo: Muestra el estado predeterminado para la llamada al vacío automático.
  • autovacuum_naptime: El valor predeterminado del parámetro es el 60 (1min), que indica la diferencia entre cada asmalor de vacío automático.
  • autovacuum_max_workers: Los procesos que se aspiran después de la siesta.
  • autovacuum_vacuum_scale_factor: Este factor dirige el vacío automático para iniciar el proceso cuando se cambia el porcentaje del valor especificado. Por defecto, se establece en 20%, lo que significa que el vacío automático entrará en acción cuando se actualice el 20% de las tablas/registros.
  • autovacuum_vacuum_threshold: Este parámetro asegura que el vacío automático debe ejecutarse después de específicos (por defecto, son 50) números de tablas se actualizan/cambian.
  • autovacuum_analyze_scale_factor: Este factor se refiere al proceso de análisis que realiza un vacío automático. Cuando se actualiza/cambia un porcentaje específico de registros, la tabla realiza el análisis.
  • autovacuum_analyze_threshold: Cuando los números específicos de las tablas encuentran actualizaciones y el umbral se cumple, el vacío automático comienza a analizar la tabla, y el valor predeterminado de este parámetro es 50.

Para editar el archivo, puede abrirlo en un editor nano utilizando el comando indicado a continuación (la ubicación de PostgreSQL.El archivo conf puede variar en su caso):

$ sudo nano/etc/postgresql/12/main/postgresql.confusión

Cómo configurar los parámetros de vacío automático para una tabla

El postgresql.confusión Archivo se ocupa de los cambios globales en los parámetros de Autovacuum. Sin embargo, puede ajustar los parámetros para una sola tabla. Por ejemplo, hemos utilizado los siguientes parámetros para el Linuxhint Tabla de base de datos MyDB:

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

Estos parámetros se pasarán con la declaración de Tabla Alter de PowerShell y la tabla ALTER se aplicará en la tabla LinuxHint como se muestra a continuación:

> ALTER TABLE LINUXHINT SET (Autovacuum_vacuum_Scale_Factor = 0.2, autovacuum_vacuum_threshold = 30, autovacuum_analyze_scale_factor = 0.2, autovacuum_analyze_threshold = 20);

Se puede calcular manualmente insertando los valores en las ecuaciones dadas en la sección anterior y es el siguiente. Supongamos que la tabla Linuxhint contiene 10 tuplas:

La operación de vacío de autovacuum se calcula como se muestra a continuación. La salida muestra que la operación de vacío de Autovacuum se realizará cuando el número de registros obsoletos llegue a 31.

Umbral de vacío de autovacuum de la tabla Linuxhint = (0.2 * 5) + 30 = 31

Del mismo modo, la operación de análisis de Autovacuum en la tabla Linuxhint se llevará a cabo cuando el número de inserciones/deleciones/actualización sea igual o excede 21.

Autovacuum Analyze of LinuxHint Table = (0.2*5) + 20 = 21

Por qué la aspiradora automática

Mirando el trabajo y la discusión anterior, se pueden extraer los siguientes beneficios del vacío automático:

  • El espacio se gestiona de manera efectiva eliminando las celdas muertas
  • El tiempo de análisis y aspiradora se guarda a medida que se lleva a cabo automáticamente
  • La hinchazón de la tabla no ocurre ya que la eliminación de las tuplas muertas ocurre automáticamente y, por lo tanto, la tabla no se desborda.
  • Autovacuum se puede llevar a cabo en modales paralelos. Por ejemplo, Autovacuum no bloquea la mesa como la aspiradora manual.

Conclusión

La funcionalidad de vacío automático de Postgres le permite realizar el vacío y analizar las tablas de una base de datos. Aunque uno puede aspirarse y analizarse manualmente, el vacío automatizado hará ambas cosas. Este artículo proporciona información detallada sobre la funcionalidad de vacío automático de Postgres. Postgres calcula los valores de umbral para cada tabla y luego decide si aspira o analizar esa tabla. Además, hemos proporcionado las ecuaciones de Postgres para calcular el vacío y analizar el umbral.