万答#6,MySQL最多只能用到128个逻辑CPU,是真的吗

发布时间:2022-06-26 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了万答#6,MySQL最多只能用到128个逻辑CPU,是真的吗脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

江湖传言MySQL最多只能用到128个逻辑CPU,是真的吗?

同事从客户现场回来,委屈巴巴的说,某PG服务商告诉客户“MySQL最高只能支持128个逻辑CPU,更多就用不上了,还是用PG吧”。

作为从MySQL 3.23时代就开始一路陪跑过来的我,肯定不能忍啊。。。

早期以MyISam引擎为主的年代,的确有类似的限制。MyISAM存在众多限制,这个也是众所周知的,不赘述了。

但自从InnoDB成为MySQL默认引擎后,这个情况应该是不复存在了。尤其是自从MySQL引入innodb_autoinc_lock_mode、innodb_io_capacITy、innodb_read_io_threads、innodb_write_io_threads等多个可控参数选项后,对于高并发的业务场景,基本上都能把所有逻辑CPU跑满。

口说无凭,直接测试验证下吧。

测试环境:

#查看CPU,共有176个逻辑CPU
$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            LiTTLe Endian
CPU(s):                176
On-line CPU(s) list:   0-175
Thread(s) PEr core:    2
Core(s) per socket:    22
Socket(s):             4
...

#OS环境
$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
$ uname -a
Linux3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

下载MySQL 5.5.62版本的二进制包,修改下面几个参数选项:

innodb_io_capacity = 20000
innodb_autoinc_lock_mode = 2
innodb_read_io_threads = 16
innodb_write_io_threads = 16
innodb_thread_concurrency = 0

实例启动后,在另外的客户机上运行Sysbench进行压测(sysbench不要和MySQL服务器跑在同一个服务器上):

#128个测试表,每个表10万行记录,并发256个线程
$ sysbench /usr/share/sysbench/oltp_read_write.lua  --mysql-host=172.16.10.10 --mysql-port=3306 --mysql-user=xx --mysql-password=xx --mysql-db=sbtest  --db-driver=mysql  --tables=128  --table_size=100000 --threads=256 --report-interval=1 --db-ps-mode=disable --time=0 run

而后运行htop观察所有CPU的状态,肉眼即可见所有逻辑CPU上都有负载:

万答#6,MySQL最多只能用到128个逻辑CPU,是真的吗

P.S,MySQL 5.1版本中的并发度确实有限,不建议使用该版本,不过现在用5.1的应该很少了吧。

最后,借用微信朋友圈一位同学的留言:talk is cheap, show your test。

Enjoy GreatSQL 😃

本文由博客一文多发平台 OpenWrite 发布!

脚本宝典总结

以上是脚本宝典为你收集整理的万答#6,MySQL最多只能用到128个逻辑CPU,是真的吗全部内容,希望文章能够帮你解决万答#6,MySQL最多只能用到128个逻辑CPU,是真的吗所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。