Пару дней назад я получил следующую ошибку из базы данных MySQL:
Переполнение стека потока: используется 68744 байта из стека 196608 байтов и необходимо 128000 байтов. Используйте 'mysqld -O thread_stack = #', чтобы указать больший стек.
Вся документация, которую я нашел, гласит:
По умолчанию 64 КБ до MySQL 4.0.10 и 192 КБ после этого. Если размер стека потока слишком мал, это ограничивает сложность операторов SQL, которые может обрабатывать сервер, глубину рекурсии хранимых процедур и другие действия, занимающие память.
Я установил переменную thread_stack в 256K, но это было просто случайное значение. На данный момент это решило проблему, но мне бы очень хотелось узнать, насколько большим оно должно быть, получить примерные значения или использования. E.g.:
- Что можно и что нельзя делать с 96 КБ (x КБ) стека потоков?
- Как вычислить, какой большой стек мне нужен?