Compartir a través de


Realice un ajuste inteligente en el servidor flexible de Azure Database for PostgreSQL

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 actual y previsto de los recursos 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 la 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 vaciado automático 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 "muertas", liberando espacio y manteniendo la base de datos 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. Esta tarea se vuelve cada vez más compleja cuando se trabaja con varias bases de datos.

Aquí es donde se indican los pasos de ajuste inteligentes. En lugar de supervisar y ajustar manualmente la base de datos, puede usar el ajuste inteligente para supervisar y ajustar automáticamente la base de datos. 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 bajo cargas de escritura elevadas.

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 sobre las características de la carga de trabajo, sino que también realiza un seguimiento del uso actual de la carga y los recursos, como la CPU o IOPS. No molesta 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 mediante la distinción de la relación de sobredimensionamiento actual, el rendimiento de escritura y la eficacia del punto de control 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 de 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 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 proceso ANALYZE, que recopila estadísticas sobre el contenido de la tabla para ayudar al planificador de consultas del 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 la hinchazón 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. El otro es el proceso de punto de control 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 parámetro checkpoint_completion_target 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.