想要学习mysql存储,双机备份,主从架构的前提是必须要有大量的数据,大量数据插入数据表的速度很慢
超过百万级别的数据就需要几个小时。那么如何在几分钟内插入上百万数据呢?
原理:mysql插入数据库 插入时候并没有提交到mysql表里在insert后面需要执行commit操作才会插入数据库
默认mysql是自动提交,如果关闭自动提交,在insert几十万数据在进行commit那么会大大缩短入库时间
建表
用户表
CREATE TABLE `user` (
`id` BIGINT (20),
`name` VARCHAR(20)
)ENGINE=INNODB;
日志表
CREATE TABLE `log` (
`id` BIGINT (20),
`msg` VARCHAR(20)
)ENGINE=INNODB;
<?php ini_set('max_execution_time', '0');//mysql执行时间 @mysql_pconnect("localhost","root","ziguangruanjian") or die('connect failed'); @mysql_select_db("tiantian") or die('select db failed'); //这一步很重要 取消mysql的自动提交 mysql_query('SET AUTOCOMMIT=0;'); mysql_query('set names utf8'); $begin = time(); $count = 1; for($i=1;$i<=1000000;$i++){ mysql_query("insert into user values($i,'name')"); //插入20W提交一次 if($i%200000=='0'){ $count++; mysql_query("insert into log values($i,$count)"); mysql_query("commit"); } } $end = time(); echo "用时 ".($end-$begin)." 秒 <hr/>"; ?>
测试结果只需要117秒
关联文章:使用mysql存储过程快速插入百万mysql测试数据