我计划在生产MySQL服务器5.7中增加线程并发性,但在需要测量和配置哪些参数/配置以将线程并发性提高到正确的最优值之前,我不确定。当查阅MySQL正式文档时,似乎有一个说明
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当引用其他博客时,提出了一些公式,如
concurrency = 2 x no.of cpu 在其他类似的博客中,他们和磁盘一起声明为
concurrency = 2 * (NumCPUs + NumDisks)如何对我的MySQL工作负载进行基准测试以调整线程并发性?
目前,我有
thread concurrency = 8
RAM = 64 GB
CPU = 20 core偶尔,缓慢的查询似乎突然增加了整个线程的使用率,所有8个线程都在运行,导致正常运行的查询速度减慢:(
因此,使用线程并发的正确方法是什么?
发布于 2021-12-21 18:17:11
为了保持这个主题的最新性,MySQL 5.7和更高版本不再建议无限并发。为什么?
在DBA StackExchange的早期,我曾建议根据我在PerconaLive2011的第一手知识将诺姆b_线程_并发性设置为0 (参见“我的Jun 20, 2012 post MySQL事务大小-多大是太大?”)。
五年后,我了解到Percona对诺姆b_线程_并发性的不同值进行了基准测试,并发现64在甲骨文的MySQL中的性能是最高的:
Aug 14, 2017:MariaDB 10.1.22使用更多内存而不是CPU (我的DBA SE邮报)Mar 17, 2016:PerconaServer5.7性能改进 (我读的Percona博客)因此,必须说
0是MySQL 5.7之前的最佳值64是MySQL 5.7及以后的最佳值发布于 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
https://dba.stackexchange.com/questions/253150
复制相似问题