2

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

该服务器服务于网站和 mysql。

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

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

那么我应该使用它们吗?

4

4 回答 4

4

请仔细阅读Mysql 性能博客,选择合适的初始值,在一天中的繁忙时间监控服务器的性能并进行相应的调整。

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

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

回到您的问题:简而言之,“线程并发没有达到您的预期”,您很可能不应该使用。innodb_thread_concurrency只是一个截止,我会说如果你的工作负载很热(即mysql不使用太多磁盘(?)),它不应该高于核心数。请阅读博客,这些设置并不像看起来那么简单。

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

于 2012-12-20T13:02:55.493 回答
4

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 无法运行。

于 2015-09-14T17:12:09.587 回答
2

(根据手动“thread_concurrency”变量仅可用于 Solaris OS)

于 2013-03-02T14:14:35.173 回答
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

于 2013-03-02T14:12:31.073 回答