美文网首页
解决大量数据插入数据库导致报错、超时

解决大量数据插入数据库导致报错、超时

作者: wuxuan94 | 来源:发表于2017-10-20 17:39 被阅读0次

1.设置内存大小,防止内存溢出

ini_set('memory_limit','1024M');

2.利用缓存:redis管道(Pipelining)。非阻塞请求/响应服务器能够实现异步处理,即使旧的请求还未被响应,也能处理新的请求。

a.首先构造redis命令的文本文件:set key value......
b.将这些命令转化成Redis Protocol :"3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\n$5\r\nvalue\r\n"...
c.redis-cli --pipe执行大量数据插入命令

3.批次插入,如:每1000条执行一次批量插入语句

$arr = array_chunk($array,5000);
foreach($arr as $k=>$v){
    $sql = $queryBuilder->batchInsert('user', ['name', 'age'], $v);
}

4.使用事务提高插入性能
使用事务可以在插入出错时进行回滚。
且在进行一个INSERT操作时,MySQL内部会建立一个事务,在事务内才进行真正插入处理操作。通过使用事务可以减少创建事务的消耗,所有插入都在执行后才进行提交操作。

相关文章

网友评论

      本文标题:解决大量数据插入数据库导致报错、超时

      本文链接:https://www.haomeiwen.com/subject/asmvuxtx.html