mysql中百萬級資料插入速度測試

來源:互聯網
上載者:User

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;
   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內建的工具有時確實不理想。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.