2010-05-27 23 views
10

llegué siguiente error de base de datos MySQL: pilaParámetro thread_stack del servidor MySQL - ¿Qué es eso? ¿Qué tan grande debería ser? Hace un par de días

sobrepaso: 68744 bytes utilizados de una pila de bytes 196608, y 128000 bytes necesarios. Use 'mysqld -O thread_stack = #' para especificar una pila más grande.

Toda la documentación que he encontrado dice que:

El valor por defecto es de 64 KB antes de MySQL 4.0.10 y 192KB partir de entonces. Si el tamaño de la pila de subprocesos es demasiado pequeño, limita la complejidad de las sentencias de SQL que el servidor puede manejar, la profundidad de recursión de los procedimientos almacenados y otras acciones que consumen mucha memoria.

Configuré la variable thread_stack en 256K, pero solo tenía un valor aleatorio. Por ahora, resolvió el problema, pero realmente me gustaría saber qué tan grande debería ser, obtener algunos valores de ejemplo o usos. Por ejemplo:

  • ¿Qué puedo hacer y qué no puedo hacer con 96KB (x KB) de la pila de subprocesos?
  • ¿Cómo calcular la gran cantidad de subprocesos que necesito?
+0

¿qué hacías que lo causó? ¿tiene alguna combinación GRANDE o procs almacenados recursivos? – oedo

+0

Procs recursivos almacenados son la razón por la que creo. También tengo combinaciones en tablas enormes (registros de 500M), pero generalmente primero corto solo un pequeño subconjunto de la tabla y luego me uno con el segundo, que es relativamente pequeño. Nunca me uní en dos tablas con millones de registros ni uniones que producen millones de registros. ¿Pero qué impacto tiene thread_stack en las uniones? – ssobczak

+0

@ssobczak, ¿alguna pista sobre cómo thread_stack tiene impacto en las uniones? –

Respuesta

10

Acaba de aparecer hoy un error similar. El MySQL documentation sobre la variable proporciona una pista para los valores predeterminados que deberían ser suficientes (192K para sistemas de 32 bits y 256K para sistemas de 64 bits), así como para ver el MySQL Benchmark suite.

Cuestiones relacionadas