Параметр сервера MySQL thread_stack - что это такое? Насколько это важно?

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

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

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

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

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

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

Ответ 1

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