Información sobre cuándo usar grupos de subprocesos

Completado

Ya ha aprendido que el servidor MySQL mantiene una memoria caché de subprocesos disponible para nuevas conexiones y que se destruye cuando ya no se necesita un subproceso.

Azure Database for MySQL permite configurar un grupo de subprocesos, una característica que proporciona un grupo de subprocesos de trabajo que limitan el número de subprocesos activos que se ejecutan en el servidor. En el caso de las cargas de trabajo con muchas conexiones de corta duración y consultas de transacciones cortas, esta característica mejora el rendimiento y la escalabilidad de Azure Database for MySQL.

La edición Enterprise de MySQL ofrece un complemento de grupo de subprocesos.

Nota:

El grupo de subprocesos es una característica del servidor flexible de Azure Database for MySQL y solo se admite en la versión 8.0 o posterior.

Es probable que el uso del grupo de subprocesos sea más eficaz en los escenarios siguientes:

  • Más de 500 conexiones simultáneas.
  • Alta utilización de CPU.
  • Grandes ráfagas de conexiones al mismo tiempo.

Es probable que el uso del grupo de subprocesos sea menos eficaz en los escenarios siguientes:

  • Largos períodos de inactividad seguidos de mucha actividad.
  • Consultas de larga duración que nunca esperan.
  • IOPS insuficiente. Azure Database for MySQL permite un número de IOPS adicionales de hasta 20 K por encima del límite de IOPS.

Para habilitar el grupo de subprocesos en Azure Portal:

  1. Vaya al servidor de Azure Database for MySQL y seleccione Parámetros del servidor.
  2. En la barra de búsqueda, escriba thread_handling para mostrar el parámetro thread_handling.
  3. Cambie el valor a pool-of-threads. De manera predeterminada, este parámetro se establece en one-thread-per-connection, que crea un subproceso para cada nueva conexión.

Nota:

thread_handling es un parámetro estático y solo se aplicará cuando se reinicie el servidor. También se puede modificar mediante la CLI de Azure.

Hay dos configuraciones adicionales que pueden mejorar el rendimiento al permitir que los subprocesos permanezcan activos y esperen a la siguiente consulta. Esto se conoce como ejecución por lotes, y los parámetros son:

  • thread_pool_batch_wait_timeout. Este parámetro especifica el tiempo máximo que un subproceso esperará para otra consulta.
  • thread_pool_batch_max_time. Este parámetro especifica el número de veces que un subproceso repetirá el ciclo de ejecución y espera de la consulta.

También puede definir el número de subprocesos del grupo mediante la configuración de los siguientes parámetros del servidor:

  • thread_pool_max_threads Este parámetro define el número máximo de subprocesos del grupo en cualquier momento.
  • thread_pool_min_threads Este parámetro define el número mínimo de subprocesos que se reservarán en el grupo, incluso después de cerrar las conexiones.

Nota:

MySQL 5.6 no admite grupos de subprocesos.