快速插入100w条数据

官网

今天打算学习一下百万级数据的查询,但是心想上哪找百万的数据呢,索性脚本填吧!第一反应是用while or  for ,尝试了一下,太慢了(老长时间了),时间就是金钱啊,然后就找了到了这个办法

LOAD DATA LOCAL INFILE A INTO TABLE B

A 文件名 

B 数据库字段名字

然后就开始往A里面写文件了,写文件花了5s,代码如下

$t=time();
set_time_limit(1000);
$myFile="./insert.txt";
$data=fopen($myFile,'wb');
if($data){
    $i=0;
    while($i<1000000)
    {
        $type = rand(1,2);
        $i++;
        $sql="$i\t'我是第".$i."个'\t'".time()."'\t$type";//用的\t,没用逗号
        fwrite($data,$sql."\r\n");
    }
    echo"写入成功,耗时:",time()-$t;
}

接着就在mysql里面执行了 上边的命令

LOAD DATA LOCAL INFILE './insert.sql'  INTO TABLE  data (id,name,ctime,type)
1000000 rows affected in 4s 738ms


完事~~~~~~~~~~~


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
快速插入100w条数据到MySQL数据库中,可以使用以下方法: 1. 使用批量插入语句:将多条插入语句合并成一条,通过一次性插入多条数据,减少与数据库的通信次数。例如,可以将100w条数据分成100组,每组10000条数据,然后使用一条INSERT语句插入每组数据。 2. 关闭自动提交:在开始插入数据之前,可以将数据库的自动提交功能关闭。这样,插入所有数据后再一次性提交事务,减少了频繁的事务提交对数据库的影响,提高插入速度。 3. 使用LOAD DATA INFILE语句:该语句可以直接从文件中读取数据,并将其插入数据库中。将100w条数据保存在一个文本文件中,然后使用LOAD DATA INFILE语句一次性将所有数据导入到数据库中,避免了多次网络传输,提高了插入速度。 4. 设置合适的缓冲区大小:通过调整MySQL的配置,将插入操作的缓冲区大小设置得合理,可以提高插入速度。可以通过增加`innodb_buffer_pool_size`的值来提高缓冲区大小,或者使用`LOAD DATA INFILE`导入数据时指定`SET bulk_insert_buffer_size`参数来设置缓冲区大小。 5. 使用并行插入:通过多线程或多个连接同时插入数据,可以加快插入速度。可以将100w条数据分成多个文件,然后使用不同的线程或连接同时插入这些文件中的数据。 6. 合理优化表结构:对于需要频繁插入数据的表,可以对表结构进行优化,如选择合适的数据类型和索引,避免不必要的约束和触发器等,以提高插入性能。 通过上述方法的组合应用,可以快速插入100w条数据到MySQL数据库中。但是插入数据的速度还受到硬件设备、数据库配置、网络状况等因素的影响,不同的环境可能会有不同的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值