Ejecución del ajuste inteligente de Azure Database for PostgreSQL: servidor flexible

SE APLICA A: Azure Database for PostgreSQL: servidor flexible

El servidor flexible de Azure Database for PostgreSQL tiene una característica de ajuste inteligente diseñada para mejorar el rendimiento automáticamente y ayudar a evitar problemas. El ajuste inteligente supervisa continuamente el estado de la base de datos del servidor flexible de Azure Database for PostgreSQL y adapta dinámicamente la base de datos a la carga de trabajo.

Esta característica consta de dos funciones de ajuste automático:

  • Ajuste del vaciado automático: esta función realiza un seguimiento de la relación de sobredimensionamiento y ajusta la configuración del vaciado automático en consecuencia. Tiene en cuenta el uso de recursos actual y previsto para evitar interrupciones de la carga de trabajo.
  • Ajuste de escrituras: esta función supervisa el volumen y los patrones de las operaciones de escritura y modifica los parámetros que afectan el rendimiento de la escritura. Estos ajustes mejoran tanto el rendimiento del sistema como su confiabilidad para evitar, de forma proactiva, posibles complicaciones.

Puede habilitar el ajuste inteligente mediante Azure Portal o la CLI de Azure.

¿Por qué el ajuste inteligente?

El proceso de autovacuum es una parte fundamental del mantenimiento del estado y el rendimiento de una base de datos de servidor flexible de Azure Database for PostgreSQL. Ayuda a recuperar el almacenamiento ocupado por filas "inactivas", lo que libera espacio y permite que la base de datos siga funcionando sin problemas.

El ajuste de las operaciones de escritura dentro de la base de datos tiene el mismo grado de importancia. Por lo general, esta tarea es responsabilidad de los administradores de bases de datos. Supervisar de forma constante una base de datos y ajustar las operaciones de escritura puede ser difícil y lento. Además, esta tarea se vuelve cada vez más compleja cuando se trabaja con varias bases de datos.

Aquí es donde interviene el ajuste inteligente. En lugar de supervisar y ajustar manualmente la base de datos, puede usar el ajuste inteligente para supervisar y optimizar la base de datos de forma automática. Con este tiempo extra, puede centrarse en otras tareas importantes.

La función de ajuste de vaciado automático en el ajuste inteligente supervisa la relación de sobredimensionamiento y ajusta la configuración según sea necesario para un uso óptimo de los recursos. Esta función administra de forma proactiva el proceso de "limpieza" de la base de datos y mitiga los problemas de rendimiento que pueden provocar datos obsoletos.

La función de optimización de escrituras observa la cantidad y los patrones transaccionales de las operaciones de escritura. Ajusta de forma inteligente parámetros como bgwriter_delay, checkpoint_completion_target, max_wal_size y min_wal_size. Al hacerlo, mejora el rendimiento y la confiabilidad del sistema, incluso en situaciones de un número elevado de operaciones de escritura.

Al usar el ajuste inteligente, puede ahorrar tiempo y recursos valiosos confiando en el servidor flexible de Azure Database for PostgreSQL para mantener el rendimiento óptimo de las bases de datos.

¿Cómo funciona el ajuste inteligente?

El ajuste inteligente es un proceso de supervisión y análisis continuo que no solo aprende de las características de la carga de trabajo, sino que también realiza un seguimiento de la carga actual y el uso de los recursos, como CPU o IOPS. Además, el ajuste inteligente no interrumpe la ejecución de las operaciones normales de la carga de trabajo de la aplicación.

El proceso permite que la base de datos se ajuste dinámicamente a la carga de trabajo al distinguir la relación de sobredimensionamiento actual, el rendimiento de escritura y la eficacia de los puntos de comprobación en la instancia. Con esta información, el ajuste inteligente implementa acciones de optimización que mejoran el rendimiento de la carga de trabajo y evitan posibles problemas.

Ajuste del vaciado automático

El ajuste inteligente ajusta cinco parámetros relacionados con el vaciado automático: autovacuum_vacuum_scale_factor, autovacuum_cost_limit, autovacuum_naptime, autovacuum_vacuum_threshold y autovacuum_vacuum_cost_delay. Estos parámetros regulan componentes como:

  • Fracción de la tabla que establece un proceso VACUUM.
  • Límite de retraso de vaciado basado en costos.
  • Intervalo de pausa entre ejecuciones de vaciado automático.
  • Recuento mínimo de tuplas actualizadas o inactivas necesarias para iniciar un proceso VACUUM.
  • Duración de pausa entre las rondas de limpieza.

Importante

El ajuste inteligente modifica los parámetros relacionados con el vaciado automático en el nivel de servidor, no en los niveles de tabla individuales. Además, si el vaciado automático está desactivado, el ajuste inteligente no puede funcionar correctamente. Para que el ajuste inteligente optimice el proceso, se debe habilitar la característica de vaciado automático.

Aunque el demonio del vaciado automático desencadena dos operaciones (VACUUM y ANALYZE), el ajuste inteligente solo se encarga del proceso VACUUM. Actualmente, esta característica no ajusta el ANALYZE proceso, que recopila estadísticas sobre el contenido de la tabla para ayudar al planificador de consultas de servidor flexible de Azure Database for PostgreSQL a elegir el plan de ejecución de consultas más adecuado.

El ajuste inteligente incluye medidas de seguridad para medir el uso de recursos, como CPU e IOPS. La actividad de vaciado automático no aumentará cuando la instancia esté bajo mucha carga. De este modo, el ajuste inteligente garantiza un equilibrio entre las operaciones de limpieza eficaces y el rendimiento general del sistema.

Cuando el ajuste inteligente optimiza el vaciado automático, considera el sobredimensionamiento medio del servidor mediante estadísticas sobre tuplas activas e inactivas. Para reducir el sobredimensionamiento, es posible que el ajuste inteligente reduzca parámetros como el factor de escala o "naptime". Puede desencadenar el proceso VACUUM antes y, si es necesario, disminuir el retraso entre rondas.

Por otro lado, si el sobredimensionamiento es mínimo y el proceso de vaciado automático es demasiado agresivo, el ajuste inteligente puede aumentar los parámetros como el retraso, el factor de escala y "naptime". Este equilibrio minimiza el sobredimensionamiento y ayuda a garantizar que el proceso de vaciado automático use recursos de forma eficaz.

Ajuste de escritura

El ajuste inteligente ajusta cuatro parámetros relacionados con el ajuste de escritura: bgwriter_delay, checkpoint_completion_target, max_wal_size y min_wal_size.

El parámetro bgwriter_delay determina la frecuencia con la que se activa el proceso de escritura en segundo plano para limpiar los búferes "sucios" (búferes que son nuevos o modificados). El proceso de escritura en segundo plano es uno de los tres procesos del servidor flexible de Azure Database for PostgreSQL que controla las operaciones de escritura. Los otros son el proceso de punto de comprobación y las escrituras de back-end (procesos de cliente estándar, como las conexiones de aplicación).

El rol principal del proceso de escritura en segundo plano es aliviar la carga del proceso de punto de comprobación principal y reducir la tensión de las escrituras de back-end. El parámetro bgwriter_delay rige la frecuencia de las rondas de escritura en segundo plano. Al ajustar este parámetro, también puede optimizar el rendimiento de las consultas del lenguaje de manipulación de datos (DML).

El checkpoint_completion_target parámetro forma parte del segundo mecanismo de escritura que admite el servidor flexible de Azure Database for PostgreSQL, específicamente el proceso de punto de comprobación. Los puntos de comprobación se producen a intervalos constantes definidos por checkpoint_timeout (a menos que se fuerce porque se ha superado el espacio configurado). Para evitar sobrecargar el sistema de E/S con un aumento de escrituras de página, la escritura de búferes sucios durante un punto de control se distribuye durante un período de tiempo. El parámetro checkpoint_completion_target controla esta duración mediante checkpoint_timeout para especificar la duración como una fracción del intervalo de punto de comprobación.

El valor predeterminado de checkpoint_completion_target es 0.9 (desde PostgreSQL 14). Este valor suele funcionar mejor, ya que distribuye la carga de E/S durante el período de tiempo máximo. En raras ocasiones, es posible que los puntos de control no finalicen a tiempo debido a fluctuaciones inesperadas en el número de segmentos necesarios del registro de escritura previa. El posible impacto en el rendimiento es la razón por la que checkpoint_completion_target es una métrica de destino para el ajuste inteligente.

Limitaciones y problemas conocidos

  • El ajuste inteligente realiza optimizaciones solo en rangos específicos. Es posible que la característica no realice ningún cambio.
  • El ajuste inteligente no ajusta la configuración de ANALYZE.
  • El ajuste de vaciado automático se admite actualmente para los niveles de proceso de servidor optimizados para memoria y de uso general que tienen cuatro o más núcleos virtuales. No se admite el nivel de proceso de servidor ampliable.

Pasos siguientes