2010-05-27 11 views
10

Un paio di giorni fa ho ricevuto seguente errore dal database MySQL: pilaParametro thread_stack del server MySQL - che cos'è? Quanto dovrebbe essere grande?

Discussione invasa: 68744 byte utilizzati di una pila 196.608 byte e 128000 byte necessari. Usa 'mysqld -O thread_stack = #' per specificare uno stack più grande.

Tutta la documentazione che ho trovato dice che:

Il valore predefinito è 64 KB prima di MySQL 4.0.10 e 192KB in seguito. Se la dimensione dello stack di thread è troppo piccola, limita la complessità delle istruzioni SQL che il server può gestire, la profondità di ricorsione delle stored procedure e altre azioni che consumano memoria.

Ho impostato la variabile thread_stack su 256K, ma era solo un valore casuale. Per ora ha risolto il problema, ma mi piacerebbe davvero sapere quanto dovrebbe essere grande, ottenere alcuni valori di esempio o usi. Es .:

  • Cosa può e cosa non posso fare con 96 KB (x KB) di thread stack?
  • Come calcolare quanto grande stack di thread ho bisogno?
+0

cosa stavi facendo? avete qualche GRANDE join o procs ricorsivi memorizzati? – oedo

+0

I processori memorizzati ricorsivi sono la ragione per cui penso. Ho anche join su tabelle enormi (record 500M), ma di solito prima tagliavo solo un piccolo sottoinsieme della tabella e poi univo a esso con il secondo, che è relativamente piccolo. Non faccio mai join su due tabelle con milioni di record né join che producono milioni di record. Ma quale impatto ha thread_stack sui join? – ssobczak

+0

@ssobczak, qualsiasi lead su come thread_stack ha impatto sui join? –

risposta

10

Appena incappato in un errore simile oggi. Lo MySQL documentation sulla variabile fornisce un suggerimento per i valori predefiniti che dovrebbero essere sufficienti (192 K per sistemi a 32 bit e 256 K per sistemi a 64 bit), nonché per osservare lo MySQL Benchmark suite.

Problemi correlati