【问题标题】:MySQL server's thread_stack parameter - what is it? How big should it be?MySQL 服务器的 thread_stack 参数 - 它是什么?它应该有多大?
【发布时间】:2011-02-24 13:29:14
【问题描述】:

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

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

我找到的所有文档都说:

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

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

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

【问题讨论】:

  • 你做了什么导致了它?你有任何 LARGE 联接或递归存储过程吗?
  • 递归存储过程是我认为的原因。我也有大型表(500M 记录)的连接,但通常我首先只剪切表的一小部分,然后将它与第二个连接,这是相对较小的。我从来没有对有数百万条记录的两个表进行连接,也从不连接产生数百万条记录。但是thread_stack对join有什么影响呢?
  • @ssobczak,关于 thread_stack 如何影响连接的任何线索?

标签: configuration mysql-management mysql


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 2021-01-30
    • 2017-04-07
    • 2023-01-19
    • 2016-07-23
    • 1970-01-01
    相关资源
    最近更新 更多