首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL5.7中分析和调整innodb_thread_concurrency的正确方法是什么?

在MySQL5.7中分析和调整innodb_thread_concurrency的正确方法是什么?
EN

Database Administration用户
提问于 2019-11-13 10:07:43
回答 2查看 1.2K关注 0票数 1

我计划在生产MySQL服务器5.7中增加线程并发性,但在需要测量和配置哪些参数/配置以将线程并发性提高到正确的最优值之前,我不确定。当查阅MySQL正式文档时,似乎有一个说明

代码语言:javascript
复制
The correct values of these variables depend on your environment and workload.Try a range of different values to determine what value works for your applications. Before limiting the number of concurrently executing threads, review configuration options that may improve the performance of InnoDB on multi-core and multi-processor computers

当引用其他博客时,提出了一些公式,如

代码语言:javascript
复制
concurrency = 2 x no.of cpu 

在其他类似的博客中,他们和磁盘一起声明为

代码语言:javascript
复制
concurrency = 2 * (NumCPUs + NumDisks)

如何对我的MySQL工作负载进行基准测试以调整线程并发性?

目前,我有

代码语言:javascript
复制
thread concurrency = 8  
RAM = 64 GB
CPU = 20 core

偶尔,缓慢的查询似乎突然增加了整个线程的使用率,所有8个线程都在运行,导致正常运行的查询速度减慢:(

因此,使用线程并发的正确方法是什么?

EN

回答 2

Database Administration用户

发布于 2021-12-21 18:17:11

为了保持这个主题的最新性,MySQL 5.7和更高版本不再建议无限并发。为什么?

在DBA StackExchange的早期,我曾建议根据我在PerconaLive2011的第一手知识将诺姆b_线程_并发性设置为0 (参见“我的Jun 20, 2012 post MySQL事务大小-多大是太大?”)。

五年后,我了解到Percona对诺姆b_线程_并发性的不同值进行了基准测试,并发现64在甲骨文的MySQL中的性能是最高的:

因此,必须说

  • 0是MySQL 5.7之前的最佳值
  • 64是MySQL 5.7及以后的最佳值
票数 1
EN

Database Administration用户

发布于 2019-11-14 00:02:32

将其设置为0,让InnoDB选择并发性。

使用currency=8的20个核心意味着至少有12个核心将始终处于空闲状态。

Max_used_connections的价值是什么?如果这不是很高,那么“并发性”就不是您的主要问题。

同时,让我们看看其中一个“慢速”查询,以及SHOW CREATE TABLE;可能会有加快速度的方法,可能会降低I/O。

有关变量和全局状态的更多分析,让我们看看它们。http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/253150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档