MySQL插入速度是多少
这篇文章主要介绍“MySQL插入速度是多少”,在日常操作中,相信很多人在MySQL插入速度是多少问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL插入速度是多少”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
写入速度
MySQL每秒可以插入50w条记录吗?
带着疑问,我们一起看看mysql每秒可以插入多少条记录?
要回答这个问题,首先要考虑影响mysql插入速度的因素有哪些?
硬盘的速度,网卡的速度,写入行的数据量,数据在硬盘中的存放位置等等因素。
简单的数据,插入速度肯定快,复杂的插入肯定慢。
所以单纯这个问题不好回答,最好的办法是进行压力测试,最后求一个平均值。
一 测试环境:
MySQL表结构
CREATETABLE`user_10w`(`id`int(10)NOTNULLAUTO_INCREMENT,`name`varchar(20)DEFAULTNULL,`mobile`varchar(11)DEFAULTNULL,`add_time`int(11)DEFAULTNULL,`groupid`tinyint(1)DEFAULTNULL,`login_time`int(11)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=MyISAMAUTO_INCREMENT=4730016DEFAULTCHARSET=utf8mb4
电脑配置
4核 Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz
ssd 120G硬盘
二. 开始测试
说明:单机测试,不涉及网卡,网络传输的影响
测试程序php pdo
include_once("tool.php");$dsn='mysql:dbname=demo;host=127.0.0.1';$user='root';$pass='root';try{$hand=newPDO($dsn,$user,$pass);}catch(PDOException$e){echo'Connectionfailed:'.$e->getMessage();}$query=$hand->prepare("insertintouser_10w(name,mobile,add_time,groupid,last_login_time)values(?,?,?,?,?)");$n=0;$count=1000000;//每次插入100w$t=time();echo'startwrite,timeis'.$t."\n";while(true){$n++;$name=Tool::getRandomStr(5);$mobile=Tool::getRandNum(9);$group=Tool::getRandNum(1);$rs=$query->execute([$name,'13'.$mobile,time(),$group,time()]);if($n>$count)break;}echo'writeend,timeis'.(time()-$t)."\n";
1.无任何索引,单进程
startwrite,timeis1593338798writeend,timeis50
耗时50s, 平均2w/秒
2. 给name添加普通索引
writeend,timeis60root@test:/data/php#php7pdo.phpstartwrite,timeis1593393695writeend,timeis61
大概慢了10s ,所以索引会导致插入变慢,因为要更新索引
负载
3. 多进程测试
用go写了一个简单的多进程执行程序
packagemainimport("os/exec""sync")varwgsync.WaitGroupfunctestRun(wg*sync.WaitGroup){c:=exec.Command("php7","./pdo.php")c.Run()wg.Done()}funcmain(){varnint=10wg.Add(n)fori:=0;i<n;i++{gotestRun(&wg)}wg.Wait();}
4进程负载
结果:
耗时115s ,插入速度平均3.4w/s
MySQL锁表状态
mysql status
10进程一起执行
10进程
耗时5‘10“ ,插入速度大概3.2w/s
MySQL锁表状态
MySQL status
到此,关于“MySQL插入速度是多少”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。