加入收藏 | 设为首页 | 会员中心 | 我要投稿 平凉站长网 (https://www.0933zz.com.cn/)- 图像处理、语音技术、媒体智能、运维、低代码!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql中百万级数据插入速度测试

发布时间:2022-07-02 11:18:27 所属栏目:MySql教程 来源:互联网
导读:100W的数据对于很多朋友来说算小菜了,但今天我就想到创建一个大量数据的测试环境,于是找了一下怎么插入100W条数据,我用的是20个字段,对比一下,首先是用 mysql 的存储过程弄的,代码如下: mysqldelimiter $ mysqlSET AUTOCOMMIT = 0$$ mysql create procedure
  100W的数据对于很多朋友来说算小菜了,但今天我就想到创建一个大量数据的测试环境,于是找了一下怎么插入100W条数据,我用的是20个字段,对比一下,首先是用 mysql 的存储过程弄的,代码如下:
 
  mysql>delimiter $
  mysql>SET AUTOCOMMIT = 0$$
   
  mysql> create  procedure test()  
  begin
  declare i decimal (10)  default 0 ;
  dd:loop         
  INSERT INTO `million` (`categ_id`, `categ_fid`, `SortPath`, `address`, `p_identifier`, `pro_specification`, `name`, `add_date`, `picture_url`, `thumb_url`, `is_display_front`, `create_html_time`, `hit`, `buy_sum`, `athor`, `templete _style`, `is_hot`, `is_new`, `is_best`) VALUES
  (268, 2, '0,262,268,', 0, '2342', '423423', '123123', '2012-01-09 09:55:43', 'upload/product/20111205153432_53211.jpg', 'upload/product/thumb_20111205153432_53211.jpg', 1, 0, 0, 0, 'admin', '0', 0, 0, 0);
     commit;  --phpfensi.com
     set i = i+1;
     if i= 1000000 then leave dd;
      end if;
     end loop dd ;
  end;$
   
  mysql>delimiter ;
   
  mysql> call test;
  结果我们看了用了58分钟,这也太费时差了吧.
 
  mysql>  call test;  
  Query OK, 0 rows affected (58 min 30.83 sec)
  非常耗时,于是我又找了一个方法,先用PHP代码生成数据,再导入,代码如下:
 
  <?php
  $t=mktime();
  set_time_limit(1000);
  $myFile="e:/insert.sql";
  $fhandler=fopen($myFile,'wb');
  if($fhandler){
   
      $sql="268t2t'0,262,268,'t0t '2342't'423423't'123123't'23423423't'2012-01-09 09:55:43't'upload/product/20111205153432_53211.jpg't'upload/product/thumb_20111205153432_53211.jpg'tNULLtNULLt38t'件't''t123t123t0";
      $i=0;
      while($i<1000000)//1,000,000
      {
          $i++;
          fwrite($fhandler,$sql."rn");
      }
      echo"写入成功,耗时:",mktime()-$t;
  }
  ?>
  然后再导入,代码如下:
 
  LOAD DATA local INFILE 'e:/insert.sql' INTO TABLE  tenmillion(`categ_id`, `categ_fid`, `SortPath`, `address`, `p_identifier`, `pro_specification`, `name`, `description`, `add_date`, `picture_url`, `thumb_url`, `shop_url`, `shop_thumb_url`, `brand_id`, `unit`, `square_meters_unit`, `market_price`, `true_price`, `square_meters_price`);  
  结果不到1分钟,100万的数据就快速的导入了,注意字段不再以逗号分割,以t分割,条记录以rn分割,结果我插入10次数据,100W平均只要1分钟搞定.
 
  总结:在大数据量处理时我们最好利用第三方插件一实现数据备份或直接在服务器上进行备份,用mysql自带的工具有时确实不理想.

(编辑:平凉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读