我有一台24个CPU和32GB内存的专用服务器。
此服务器提供网站和mysql。
我不知道这两个变量之间有什么区别,如果有的话。
我不知道是否应该使用它们,因为在阅读Google之后,有些人会说这些变量可能会被忽略,具体取决于操作系统或MySQL版本。
我应该使用它们吗?
答案 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