当我测试mysql时,tps的瓶颈是什么?

6tdlim6h  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(265)

我的mysql表如下: CREATE TABLEaddress(idint(11) NOT NULL AUTO_INCREMENT,addr1varchar(60) NOT NULL,addr2varchar(60) NOT NULL,cityvarchar(30) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=966602 DEFAULT CHARSET=utf8 mysql信息
id,主键,在1到966601之间。我想用多线程多链接测试mysql瓶颈的tps,sql是“selectfrom address where id=rand”,rand在1到966601之间。
硬信息:
mysql在另一台pc上,网络为100m,i ping延时约0.4ms,mysql中的数据在机械硬盘上。cpu有12个虚拟内核。内存为8gb。
开始测试:
好的,我已经准备好测试mysql了,当我只使用一个线程和一个链接时,tps只有1318,cpu使用率(总共12个虚拟核心)只有2%。我用两个线程和两个链接来测试mysql,结果是tps是2670,cpu是4%,都是一个线程的两倍。我继续增加线程数,当线程和链接数为10时,tps为14000,cpu为15%;当线程和链接计数为20时,tps到达top:18000,cpu为23%。当我将线程和链接数设置为30时,tps不会增加,cpu使用率也不会增加。
为什么?
所以我想知道当我使用多线程和链接以及sql“select
from address where is=rand”来测试我的mysql时,tps的瓶颈是什么,cpu使用率不能达到100%。这种现象背后的原因是什么?是网络延迟、磁盘io、客户端线程调度、服务器线程调度还是mysql?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题