Tous les produits
Search
Centre de documentation

PolarDB:Thread Pool

Dernière mise à jour :Oct 12, 2026

Pour offrir des performances optimales avec PolarDB for MySQL, PolarDB propose la fonctionnalité Thread Pool, qui dissocie les threads des sessions. De nombreuses sessions peuvent rester ouvertes simultanément, tandis qu'un nombre restreint de threads traite les tâches des sessions actives.

Avantages

Par défaut, MySQL utilise un mode exclusif par session, où chaque session crée un thread dédié. Lorsqu'un grand nombre de sessions sont actives, la forte concurrence pour les ressources dégrade les performances. Une sollicitation excessive de l'ordonnanceur de threads du système et des échecs de cache (cache misses) entraînent également une chute brutale des performances.

Le Thread Pool de PolarDB met en œuvre des mécanismes de priorité et de contrôle de la concurrence pour différents types d'opérations SQL. Il maintient le nombre de connexions à un niveau optimal, permettant aux bases de données PolarDB de conserver des performances élevées même avec un grand nombre de connexions et une forte concurrence. Le Thread Pool offre les avantages suivants :

  • Lorsque de nombreux threads s'exécutent simultanément, le Thread Pool maintient automatiquement le nombre de threads concurrents dans une plage raisonnable, évitant ainsi une surcharge de l'ordonnancement des threads et les échecs de cache.

  • En cas d'exécution simultanée de nombreuses transactions, le Thread Pool attribue des priorités distinctes aux instructions et aux transactions, et contrôle leur concurrence séparément, ce qui réduit la compétition pour les ressources.

  • Le Thread Pool accorde une priorité plus élevée aux instructions SQL de gestion, garantissant leur exécution en premier lieu. Les nouvelles connexions, les opérations de gestion et la surveillance restent donc stables, même lorsque la charge du système est élevée.

  • Les instructions SQL de requêtes complexes reçoivent une priorité relativement plus faible et leur concurrence maximale est limitée. Cela empêche une accumulation excessive de requêtes complexes d'épuiser les ressources système et de rendre le service de base de données indisponible.

Utiliser le Thread Pool

La fonctionnalité Thread Pool inclut les paramètres suivants, modifiables dans la console. Pour plus d'informations, consultez la rubrique Définir les paramètres de cluster et de nœud.

Remarque

Les paramètres de cluster dans la console PolarDB comportent le préfixe de compatibilité du fichier de configuration MySQL : loose_. Pour modifier les paramètres dans la console PolarDB, modifiez les paramètres précédés du préfixe loose_.

Paramètre

Description

loose_thread_pool_enabled

Indique si le Thread Pool est activé. Valeurs possibles :

  • ON : active le Thread Pool.

  • OFF : désactive le Thread Pool.

Remarque
  • La valeur par défaut de ce paramètre varie selon la version.

    • MySQL 5.6 : la valeur par défaut est OFF.

    • MySQL 5.7, MySQL 8.0.1 et MySQL 8.0.2 : la valeur par défaut est ON.

  • L'activation ou la désactivation du Thread Pool ne nécessite pas de redémarrage du cluster.

loose_thread_pool_size

Nombre de groupes de threads dans le Thread Pool. La plage de valeurs dépend du nombre de cœurs CPU des spécifications du nœud principal du cluster.

Plage de valeurs : DBNodeClassCPU~DBNodeClassCPU10. Valeur par défaut : DBNodeClassCPU2.

Remarque
  • DBNodeClassCPU est un entier représentant le nombre de cœurs CPU des spécifications du nœud principal.

  • MySQL 5.7 a une valeur par défaut de DBNodeClassCPU.

Exemples :

  • Avec le Moteur de base de données défini sur MySQL 8.0.1 dans la série Cluster Edition, si les spécifications du nœud principal sont de 4 cœurs et 8 Go, la plage de valeurs est de 4 à 40 et la valeur par défaut est 8.

  • Avec le Moteur de base de données défini sur MySQL 8.0.1 dans la série Multi-master Cluster (Limitless) Edition, si les deux nœuds principaux ont des spécifications de 4 cœurs et 8 Go, la plage de valeurs est de 8 à 80 et la valeur par défaut est 16.

  • Avec le Moteur de base de données défini sur MySQL 5.7 dans la série Cluster Edition, si les spécifications du nœud principal sont de 4 cœurs et 8 Go, la plage de valeurs est de 4 à 40 et la valeur par défaut est 4.

loose_thread_pool_high_prio_mode

Mode de file d'attente haute priorité du Thread Pool. Valeurs possibles :

  • transactions (par défaut) : les instructions SQL au sein d'une transaction ouverte sont ajoutées à la file d'attente haute priorité et reçoivent des tickets thread_pool_high_prio_tickets. Toutes les instructions SQL suivantes sont placées dans la file d'attente haute priorité jusqu'à épuisement des tickets.

  • statements : toutes les instructions SQL sont ajoutées à la file d'attente haute priorité.

  • none : aucune instruction SQL n'est ajoutée à la file d'attente haute priorité.

Remarque

S'applique à :

  • MySQL 5.6

  • MySQL 5.7

loose_thread_pool_high_prio_tickets

Nombre de tickets accordés à la fois pour la file d'attente haute priorité.

Plage de valeurs : 0~4294967295. Valeur par défaut : 4294967295.

Remarque

S'applique à :

  • MySQL 5.6

  • MySQL 5.7

loose_thread_pool_idle_timeout

Seuil de temps pour la libération des threads inactifs dans le Thread Pool. Un thread inactif qui n'a traité aucune requête au-delà de ce seuil est libéré.

Plage de valeurs : 0~31536000. Valeur par défaut : 60. Unité : secondes.

Remarque

S'applique à :

  • MySQL 5.6

  • MySQL 5.7

loose_thread_pool_oversubscribe

Nombre de threads actifs autorisés dans chaque groupe de threads. Un thread actif est un thread en cours d'exécution d'une instruction SQL.

Plage de valeurs : 1~1000. Valeur par défaut : 20.

loose_thread_pool_stall_limit

Seuil de temps utilisé pour déterminer si le Thread Pool est entré dans un état bloqué (stalled).

Lorsque le Thread Pool entre dans un état bloqué, le système crée de nouveaux threads pour traiter les instructions SQL.

Plage de valeurs : 1~18446744073709551615. Valeur par défaut : 10. Unité : millisecondes.

Remarque

MySQL 5.6 a une valeur par défaut de 30 millisecondes.

loose_bypass_thread_pool_ips

Configure les adresses IP clientes non soumises aux restrictions du Thread Pool. Même lorsque le Thread Pool est saturé, les instructions SQL peuvent être exécutées pour effectuer des opérations de gestion.

Exemple de configuration :

10.69.96.16,10.69.96.17
Remarque

S'applique à : MySQL 8.0.1 8.0.1 avec la révision 8.0.1.1.19 ou ultérieure.

loose_bypass_thread_pool_check_ignore_proxy

Indique s'il faut ignorer les adresses IP des clients connectés via Proxy lors de la détection des adresses IP clientes à l'aide de loose_bypass_thread_pool_ips. Valeurs possibles :

  • ON (par défaut) : pour les adresses IP des clients connectés via Proxy, même si loose_bypass_thread_pool_ips inclut l'adresse IP du client, celui-ci reste soumis aux restrictions du Thread Pool.

  • OFF : pour les adresses IP des clients connectés via Proxy, si loose_bypass_thread_pool_ips inclut l'adresse IP du client, celui-ci n'est pas soumis aux restrictions du Thread Pool.

Remarque

S'applique à : MySQL 8.0.1 avec la révision 8.0.1.1.19 ou ultérieure.

loose_thread_pool_high_priority_users

Configure les comptes de base de données prioritaires. Après configuration, les requêtes provenant de ces comptes sont placées dans la file d'attente haute priorité du Thread Pool et traitées en premier.

Exemple de configuration :

user1, user2
Remarque
  • S'applique à :

    • MySQL 8.0.1 avec la révision 8.0.1.1.19 ou ultérieure.

    • MySQL 8.0.2 avec la révision 8.0.2.2.12 ou ultérieure.

  • Après configuration de ce paramètre, il prend effet uniquement pour les nouvelles connexions à la base de données.

  • Ne configurez pas trop de comptes prioritaires.

loose_thread_pool_mark_ddl_thread_timeout_sec

Configure le seuil de délai d'expiration du Thread Pool pour les instructions DDL. Une fois ce seuil dépassé, l'instruction DDL est marquée comme expirée et le système crée de nouveaux threads pour traiter les requêtes.

Plage de valeurs : 0~864000. Valeur par défaut : 600. Unité : secondes.

Remarque

S'applique à : MySQL 8.0.1 avec la révision 8.0.1.1.19 ou ultérieure.

loose_thread_pool_mark_ddl_thread_timeout_immediately

Indique s'il faut marquer immédiatement les instructions DDL comme expirées lorsque le Thread Pool est fortement sollicité et que la file d'attente basse priorité est encombrée. Le système crée alors de nouveaux threads pour traiter les requêtes. Ce paramètre convient aux charges de travail nécessitant des opérations DDL par lots fréquentes. Valeurs possibles :

  • ON : active cette fonctionnalité.

  • OFF (par défaut) : désactive cette fonctionnalité.

Remarque

S'applique à : MySQL 8.0.1 avec la révision 8.0.1.1.19 ou ultérieure.

Interroger l'état du Thread Pool

Exécutez la commande suivante pour interroger l'état du Thread Pool :

select * from information_schema.THREAD_POOL_STATUS;

L'exemple de sortie suivant est renvoyé :

mysql> select * from information_schema.THREAD_POOL_STATUS;
+----+--------------+---------------------+----------------------+-------------------+---------------------------+------------------+-----------------+------------------+
| ID | THREAD_COUNT | ACTIVE_THREAD_COUNT | WAITING_THREAD_COUNT | DUMP_THREAD_COUNT | SLOW_THREAD_TIMEOUT_COUNT | CONNECTION_COUNT | LOW_QUEUE_COUNT | HIGH_QUEUE_COUNT |
+----+--------------+---------------------+----------------------+-------------------+---------------------------+------------------+-----------------+------------------+
|  0 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  1 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  2 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  3 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  4 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  5 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  6 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  7 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  8 |            1 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  9 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 10 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 11 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 12 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 13 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 14 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 15 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 16 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 17 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 18 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 19 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 20 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 21 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 22 |            2 |                   1 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 23 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 24 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 25 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 26 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 27 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 28 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 29 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 30 |            2 |                   0 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 31 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 32 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 33 |            2 |                   0 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 34 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 35 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 36 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 37 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 38 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 39 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 40 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 41 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 42 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 43 |            1 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 44 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 45 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 46 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 47 |            3 |                   1 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 48 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 49 |            3 |                   1 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 50 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 51 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 52 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 53 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 54 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 55 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 56 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 57 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 58 |            1 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 59 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 60 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 61 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 62 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 63 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
+----+--------------+---------------------+----------------------+-------------------+---------------------------+------------------+-----------------+------------------+
64 rows in set (0.00 sec)

Le tableau suivant décrit les paramètres.

Paramètre

Description

ID

ID du Thread Pool.

THREAD_COUNT

Nombre de threads dans le Thread Pool.

ACTIVE_THREAD_COUNT

Nombre de threads actifs dans le Thread Pool.

WAITING_THREAD_COUNT

Nombre de threads dans le Thread Pool en attente d'E/S disque ou de validation de transaction.

DUMP_THREAD_COUNT

Nombre de connexions persistantes de type DUMP dans le Thread Pool.

SLOW_THREAD_TIMEOUT_COUNT

Nombre de threads dans le Thread Pool marqués comme expirés.

CONNECTION_COUNT

Nombre de connexions utilisateur établies dans le Thread Pool.

LOW_QUEUE_COUNT

Nombre de requêtes en attente dans la file d'attente basse priorité du Thread Pool.

HIGH_QUEUE_COUNT

Nombre de requêtes en attente dans la file d'attente haute priorité du Thread Pool.

Tests Sysbench

Les figures ci-dessous comparent les performances avec le Thread Pool activé et désactivé. Les résultats des tests montrent que le Thread Pool offre des avantages de performance nets sous forte concurrence.

Figure 1. Test de mise à jour OLTP sans index OLTP non-indexed update

Figure 2. Test OLTP en écriture seule OLTP write-only

Figure 3. Test OLTP en lecture seule OLTP read-only

Figure 4. Test OLTP en lecture/écriture OLTP read/write test

Dépanner un Thread Pool saturé

Si la base de données rencontre des délais d'expiration de connexion ou des requêtes mises en file d'attente, vérifiez si le Thread Pool est saturé.

  1. Connectez-vous à la console PolarDB et accédez à la page de détails du cluster cible.

  2. Choisissez Performance Monitoring > Advanced Monitoring > Database Metrics > Thread Pool.

  3. Comparez thread_pool_running_threads (le nombre actuel de threads en cours d'exécution) avec tp_thread_count (la capacité totale en threads du Thread Pool). Si thread_pool_running_threads reste proche de tp_thread_count, le Thread Pool est saturé.

  4. Vérifiez les métriques tp_low_queue_count et tp_high_queue_count. Un encombrement dans l'une ou l'autre file d'attente indique que les requêtes sont mises en file d'attente et que le Thread Pool est saturé.