MySQL thread_concurrency,innodb_thread_concurrency,我应该使用与否?

时间:2012-11-02 12:20:16

标签: mysql database-performance

我有一台24个CPU和32GB内存的专用服务器。

此服务器提供网站和mysql。

我不知道这两个变量之间有什么区别,如果有的话。

我不知道是否应该使用它们,因为在阅读Google之后,有些人会说这些变量可能会被忽略,具体取决于操作系统或MySQL版本。

我应该使用它们吗?

4 个答案:

答案 0 :(得分:4)

请仔细阅读Mysql Performance Blog,选择合适的初始值,在当天繁忙时段监控服务器的性能并进行相应调整。

没有简单的答案,因为您的工作量是独一无二的。

在我的脑海中,你的CPU和RAM的平衡似乎是错误的。我认为对于64GB内存可以使用1~4个内核,或者可以获得最大内存为24个内核,也许是192GB?需要为查询速率配置CPU,而为活动/热数据集大小配置RAM。我可以想象你的CPU / RAM有意义的奇怪的工作量,但我不确定innodb实际上是这种工作负载的最佳解决方案。

回到你的问题:"thread concurrency doesn't do what you expect"总之,你不应该使用。 innodb_thread_concurrency只是一个截止点,我会说如果你的工作负载都很热(即mysql不使用太多磁盘(?)),它不应该高于核心数。请阅读博客,这些设置并不像看起来那么简单。

另外,您可能需要注意:线程缓存,innodb缓冲池,添加内存池,堆表大小,排序/密钥缓冲区大小,tx提交时的刷新日志,日志文件大小。可能还有一些我现在想不到的。

答案 1 :(得分:3)

MySQL中的thread_concurrency选项主要用于Solaris系统,并且在版本5.6中也会被折旧,因此调整它可能是浪费时间。

thread_concurrency

另请阅读:https://www.percona.com/blog/2012/06/04/thread_concurrency-doesnt-do-what-you-expect/

innodb_thread_concurrency可以根据性能进行调整,但我发现使用它没有性能提升。

我从https://www.percona.com/blog/找到了最好的信息。所有其他建议和提供建议都可能认为MySQL无法运行。

答案 2 :(得分:2)

(根据手册“thread_concurrency”变量仅适用于Solaris OS)

答案 3 :(得分:0)

这取决于许多问题,操作系统,调度程序选项,I / O子系统以及CPU的数量和类型,以及正在运行的查询的类型和数量。

您可以在系统上确定的唯一方法是调整innodb_thread_concurrency的值并运行典型的工作负载以进行基准测试。合理的起点是从0到48(在您的情况下)x2倍可用的CPU核心数。然后,您可以将此值增加到您开始看到系统变为CPU限制并稍微调节它的位置。

这不会考虑事务将生成的磁盘活动,然后您可以从那里查看磁盘I / O并从那里进行调整。

将此设置为0将此设置为无限制 **因此默认情况下,并发执行线程的数量没有限制

http://dev.mysql.com/doc/refman/5.5/en/innodb-performance-thread_concurrency.html