Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Thread pool

Dernière mise à jour :Oct 09, 2026

Pour optimiser les performances d'ApsaraDB for RDS, Alibaba Cloud propose un thread pool. Cette fonctionnalité dissocie les threads des sessions, permettant à un nombre restreint de threads de gérer les tâches d'un grand nombre de sessions actives.

Avantages

Le modèle de connexion MySQL par défaut repose sur le principe « un thread par session ». Lorsqu'un grand nombre de sessions se connectent, ce modèle peut entraîner une forte contention des ressources. La surcharge liée à la planification des threads système et à l'invalidation fréquente du cache peut provoquer une chute brutale des performances.

Le thread pool d'ApsaraDB for RDS met en œuvre un mécanisme de contrôle des priorités et de la concurrence pour différents types d'opérations SQL. Il maintient le nombre de threads concurrents à un niveau optimal, garantissant ainsi des performances élevées même sous de fortes charges de travail concurrentes. Les principaux avantages du thread pool sont :

  • Sous forte concurrence, le thread pool maintient le nombre de threads actifs dans une plage optimale. Cela réduit la surplanification des threads et l'invalidation excessive du cache.

  • Pour les transactions concurrentes, le thread pool réduit la contention des ressources en attribuant différentes priorités aux instructions SQL et aux transactions, tout en contrôlant leur niveau de concurrence.

  • Le thread pool accorde la priorité aux instructions SQL administratives, assurant ainsi que les opérations telles que la création de nouvelles connexions, la gestion et la surveillance s'exécutent de manière fiable, même lorsque la charge système est élevée.

  • Le thread pool attribue une priorité plus faible aux instructions SQL complexes et impose une limite maximale de concurrence. Cela empêche qu'un trop grand nombre d'instructions SQL complexes n'épuisent les ressources système et ne rendent le service de base de données indisponible.

Prérequis

Votre instance RDS exécute MySQL 5.6, 5,7, 8,0 ou 8,4.

Paramètres du thread pool

Configurez le thread pool à l'aide des trois paramètres suivants dans la console. Pour plus d'informations, consultez Configurer les paramètres de l'instance.

Paramètre Description
loose_thread_pool_enabled Indique si la fonctionnalité thread pool est activée. Valeurs possibles :
  • ON
  • OFF

Valeur par défaut : ON.

Remarque
  • Utilisez ce paramètre pour activer ou désactiver la fonctionnalité thread pool. Le paramètre thread_handling n'est plus utilisé à cette fin.
  • L'activation ou la désactivation du thread pool ne nécessite pas le redémarrage de l'instance.
loose_thread_pool_size Nombre de groupes de threads. Valeur par défaut : 4. Les threads du pool sont répartis uniformément entre ces groupes pour la gestion.
loose_thread_pool_oversubscribe Nombre de threads actifs autorisés dans chaque groupe de threads. Valeur par défaut : 32. Un thread actif est un thread qui exécute une instruction SQL, à l'exclusion des cas suivants :
  • L'instruction SQL attend une opération d'E/S disque.
  • L'instruction SQL attend la validation d'une transaction.

État du thread pool

Pour interroger l'état du thread pool, exécutez la commande suivante :

show status like "thread_pool%";

Exemple :

mysql> show status like "thread_pool%";

+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| thread_pool_active_threads | 1     |
| thread_pool_big_threads    | 0     |
| thread_pool_dml_threads    | 0     |
| thread_pool_idle_threads   | 19    |
| thread_pool_qry_threads    | 0     |
| thread_pool_total_threads  | 20    |
| thread_pool_trx_threads    | 0     |
| thread_pool_wait_threads   | 0     |
+----------------------------+-------+
8 rows in set (0.00 sec)            

Le tableau suivant décrit les variables d'état.

Paramètre Description
thread_pool_active_threads Nombre de threads actifs dans le thread pool.
thread_pool_big_threads Nombre de threads dans le thread pool qui exécutent des requêtes complexes. Les requêtes complexes incluent celles comportant des sous-requêtes, des fonctions d'agrégation ou des clauses telles que GROUP BY et LIMIT.
thread_pool_dml_threads Nombre de threads dans le thread pool qui exécutent des instructions DML.
thread_pool_idle_threads Nombre de threads inactifs dans le thread pool.
thread_pool_qry_threads Nombre de threads dans le thread pool qui exécutent des requêtes simples.
thread_pool_total_threads Nombre total de threads dans le thread pool.
thread_pool_trx_threads Nombre de threads dans le thread pool qui exécutent des transactions.
thread_pool_wait_threads Nombre de threads dans le thread pool qui attendent des opérations d'E/S disque ou la validation de transactions.

Tests SysBench

Les figures suivantes comparent les performances avec le thread pool activé et désactivé. Les résultats des tests indiquent que le thread pool offre un avantage significatif en termes de performances sous de fortes charges de travail concurrentes.