2010-05-27 7 views
10

il y a quelques jours, je suis erreur suivant la base de données MySQL:Le paramètre thread_stack du serveur MySQL - qu'est-ce que c'est? Quelle taille devrait-il avoir?

pile de dépassement de course: 68744 octets utilisés d'une pile 196608 octets, et 128000 octets nécessaires. Utilisez 'mysqld -O thread_stack = #' pour spécifier une plus grande pile.

Tous les documents que j'ai trouvé dit que:

La valeur par défaut est 64 Ko avant MySQL 4.0.10 et 192KB par la suite. Si la taille de la pile de threads est trop petite, cela limite la complexité des instructions SQL que le serveur peut gérer, la profondeur de récursivité des procédures stockées et d'autres actions consommatrices de mémoire.

J'ai défini la variable thread_stack à 256K, mais c'était juste une valeur aléatoire. Pour l'instant, il a résolu le problème, mais j'aimerais vraiment savoir quelle devrait être la taille, obtenir des valeurs d'exemple, ou des usages. E.g .:

  • Que puis-je faire et que puis-je faire avec 96 Ko (x Ko) de pile de threads?
  • Comment calculer la taille de la pile de threads dont j'ai besoin?
+0

qu'est-ce que vous étiez en train de faire? avez-vous des LARGE jointures, ou des procs récursifs stockés? – oedo

+0

Procs récursifs stockés sont la raison pour laquelle je pense. J'ai aussi des jointures sur des tables énormes (500M enregistrements), mais d'habitude je coupe d'abord un petit sous-ensemble de la table et ensuite je joins avec la seconde, qui est relativement petite. Je ne fais jamais de jointure sur deux tables avec des millions d'enregistrements ni de jointures qui produisent des millions d'enregistrements. Mais quel est l'impact de thread_stack sur les jointures? – ssobczak

+0

@ssobczak, des pistes sur la façon dont thread_stack a un impact sur les jointures? –

Répondre

10

Juste couru dans une erreur semblable aujourd'hui. Le MySQL documentation sur la variable fournit un indice pour les valeurs par défaut qui devraient être assez (192K pour les systèmes 32 bits et 256K pour les systèmes 64 bits), ainsi que pour regarder le MySQL Benchmark suite.