17

几天前,我从 MySQL 数据库中收到以下错误:

线程堆栈溢出:196608 字节堆栈使用了 68744 字节,需要 128000 字节。使用 'mysqld -O thread_stack=#' 指定更大的堆栈。

我发现的所有文档都说:

MySQL 4.0.10 之前的默认值为 64KB,之后为 192KB。如果线程堆栈大小太小,则会限制服务器可以处理的 SQL 语句的复杂性、存储过程的递归深度以及其他消耗内存的操作。

我将变量 thread_stack 设置为 256K,但它只是一个随机值。现在它解决了这个问题,但我真的很想知道它应该有多大,获取一些示例值或用法。例如:

  • 我可以用 96KB (x KB) 的线程堆栈做什么和不能做什么?
  • 如何计算我需要多大的线程堆栈?
4

1 回答 1

14

今天刚遇到类似的错误。有关该变量的MySQL 文档提供了一个提示,默认值应该足够了(32 位系统为 192K,64 位系统为 256K),以及查看MySQL Benchmark 套件

于 2011-03-10T19:40:48.460 回答