8位数字md5和sha1数据,1亿条数据入库

千万级数据库入库测试。

 1 header("content-type:text/html; charset=utf-8");
 2 $path = dirname(realpath(__FILE__));
 3 $fw = fopen($path . "/md5.sql", "w");
 4 for($i=0; $i<100000000; $i++){
 5     $md5  = md5($i);
 6     $sha1 = sha1($i);
 7     $str = '';
 8     if($i % 2000 == 0){
 9         if($i !== 0)$str = ';'.chr(10);
10         $str .= 'INSERT INTO `npd`(`m`,`s1`) VALUES(\''.$md5.'\',\''.$sha1.'\')';
11     }
12     else{
13         $str .= ',(\''.$md5.'\',\''.$sha1.'\')';
14     }
15     fwrite($fw, $str);
16     if($i % 100000 == 0) echo $i.chr(10);
17 }
18 fwrite($fw, ';'.chr(10));
19 fclose($fw);
20 echo "create insert sql success\n"; exit;

采用命令行模式,一亿条数据文件生成很快,大概耗时20分钟,将近7.5G大小。 导入mysql数据库,库表无索引,大概两个小时还不到。 单条数据查询,耗时2-3分钟。 执行select count(*) from npd; 数据库直接卡死。 如果库表先建立好索引,再导数据,则随着时间的增加,数据入库越来越慢。 到了八百万数据不到样子,两千条数据入库好几分钟。而且此时的数据索引文件有1G多。

posted on 2012-08-17 21:34  Jacky Yu  阅读(442)  评论(0编辑  收藏  举报