Параметр thread_stack сервера MySQL - что это? Насколько большой это должно быть? - PullRequest
12 голосов
/ 27 мая 2010

Пару дней назад я получил следующую ошибку из базы данных MySQL:

Переполнение стека потока: используется 68744 байта из стека 196608 байтов и необходимо 128000 байтов. Используйте 'mysqld -O thread_stack = #', чтобы указать больший стек.

Вся документация, которую я нашел, гласит:

По умолчанию 64 КБ до MySQL 4.0.10 и 192 КБ после этого. Если размер стека потока слишком мал, это ограничивает сложность операторов SQL, которые может обрабатывать сервер, глубину рекурсии хранимых процедур и другие действия, занимающие память.

Я установил переменную thread_stack в 256K, но это было просто случайное значение. На данный момент это решило проблему, но мне бы очень хотелось узнать, насколько большим оно должно быть, получить примерные значения или использования. E.g.:

  • Что можно и что нельзя делать с 96 КБ (x КБ) стека потоков?
  • Как вычислить, какой большой стек мне нужен?

1 Ответ

11 голосов
/ 10 марта 2011

Просто сегодня столкнулся с подобной ошибкой. Документация MySQL о переменной предоставляет подсказку для значений по умолчанию, которых должно быть достаточно (192 КБ для 32-разрядных систем и 256 КБ для 64-разрядных систем), а также для просмотра набора MySQL Benchmark .

...