php操作mysql,1分钟内插入百万数据

实测45秒:


原理: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;


ini_set('max_execution_time', '0');    //mysql执行时间
@mysql_pconnect("localhost","root","root") or die('connect failed');
@mysql_select_db("test") 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/>";

猜你喜欢

转载自blog.csdn.net/qq_33862644/article/details/80354085