Dépassement de pile de threads : erreur 1436 dans MySQL
Description de l'erreur
Erreur MySQL 1436, ER_STACK_OVERRUN_NEED_MORE, signifie un dépassement de pile de threads. Cette erreur se produit lorsqu'un thread tente d'utiliser plus de mémoire de pile que celle disponible, généralement lors de l'exécution de requêtes ou de déclencheurs complexes.
Root Cause
La cause principale la cause de l’erreur 1436 est une taille de pile de threads insuffisante. La taille de pile de threads par défaut est généralement définie sur 128 Ko (131 072 octets), mais peut être configurée dans le fichier de configuration my.cnf.
Analyse des détails de l'erreur
Le message d'erreur fournit ce qui suit détails :
-
1436 : Le numéro d'erreur.
-
Pile de threads : La zone de mémoire utilisée pour stocker les variables locales et les paramètres de fonction pendant l'exécution du thread.
-
Dépassement : La pile a été dépassé.
-
6136 octets utilisés : La quantité de mémoire de pile utilisée au moment de l'erreur.
-
131072 octets de pile : La taille totale de la pile de threads.
-
128000 octets nécessaires :Le quantité de mémoire de pile requise par l'opération de thread en cours.
Détermination de la source de la pile de threads
Pour déterminer d'où vient la valeur de la pile de thread :
- Vérifiez le fichier de configuration my.cnf pour tout thread_stack explicite settings.
- Utilisez la table performance_schema.variables_info pour interroger la colonne VARIABLE_SOURCE pour la variable 'thread_stack'. Cela révélera si la valeur provient du binaire compilé, d'un fichier de configuration ou d'un paramètre dynamique.
Solution
Pour résoudre l'erreur 1436 , augmentez la taille de la pile de threads pour répondre aux besoins en mémoire de l'opération de thread. Ceci peut être réalisé en :
-
Modification du fichier my.cnf : Définissez le paramètre 'thread_stack' sur une valeur plus élevée, généralement 256 Ko ou plus.
- Ajustement dynamique de la taille de la pile de threads : Utilisez la variable définie par l'utilisateur 'thread_stack' pour définir une taille de pile spécifique pour les connexions individuelles.
-
Optimisation de la requête ou du déclencheur : Réduisez l'utilisation de la pile de la requête ou du déclencheur en l'optimisant et en réduisant sa complexité.
-
Déterminer si une version personnalisée de MySQL a été utilisée : Si l'erreur se produit dans une version personnalisée, vérifiez que la taille de la pile de threads par défaut n'a pas été modifiée lors de la compilation processus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!