csdnユーザデータベースとオフィシャルユーザの重畳度を合わせて重複部分のユーザを選別します。
3318 ワード
過程:1、csdnを取得したユーザーデータベースは当地試用のeditplusを導入してメモリ不足をヒントします。方法が見つからないです。同僚のlinuxで調べました。基本的なフォーマットは以下の通りです。キャッシュに書き込まれていないはずです。データを導入するコード
CREATE TABLE IF NOT EXISTS `csdn_userdb` (
`id` int(10) NOT NULL auto_increment,
`username` varchar(50) character set gbk NOT NULL,
`password` varchar(50) character set gbk NOT NULL,
`email` varchar(50) character set gbk NOT NULL,
PRIMARY KEY (`id`),
KEY `username` (`username`),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ;
以上のコードの効率が非常に悪いので、修正後のコードは以下の通りです。
<?php
$link = mysql_connect('localhost', 'root', 'admin', true);
mysql_select_db('csdn',$link);
$handle = fopen("C:\Users\zhudong\Desktop\www.csdn.net.sql", "r");
while (!feof($handle)){
$i++;
$buffer = fgets($handle);
list($u,$p,$e) = explode(" # ",$buffer);
mysql_query("INSERT INTO csdn_userdb(username,password,email) VALUES ('$u','$p','$e')",$link);
if ($i%1000 == 0) echo $i."
";
}
fclose($handle);
?>
それらの要因が導入データの効率に影響を与えることを明らかにするために、CSDN用户総データ6428600をテストしました。導入後のデータ:5,902,000;データ損失526600損失率:8%データテーブルエンジン:MyISAM;インデックス:あります合計時間:15分は$perpage=200で、導入後のデータ総数:6,210,200;データの消失:21400;損失率:3.3%データテーブルエンジン:MYISAM;インデックス:あります合計時間:30分で$perpage=200、導入後のデータ総数:6,210,200;データの消失:21400;損失率:3.3%データテーブルエンジン:INNODB;インデックス:あります総所要時間:65分で$perpage=200、導入後のデータ総数:6,210,200;データの消失:21400;損失率:3.3%データテーブルエンジン:MYISAM;索引:なし;合計時間:14分(データ導入後単独再構築インデックス)は$perpage=50の場合、導入後のデータ総数:6,371,200;データ損失:57400、損失率:0.8%データテーブルエンジン:MYISAM;インデックス:なし:合計時間:20分以上の状況に基づいてまとめました。1、データを導入した後にインデックスを追加する効率はインデックスを追加した後に導入するデータの2倍以上になります。InnoDBはシングルプロセスデータに挿入する効率はMYISAMよりもかなり低いです。3、perpage=50の場合、データ損失率は1%以下の
<?php
$link = mysql_connect('localhost', 'root', 'admin', true);
mysql_select_db('csdn',$link);
$handle = fopen("C:\Users\zhudong\Desktop\www.csdn.net.sql", "r");
$perpage = 50;
while (!feof($handle)){
$i++;
$buffer = fgets($handle);
list($u,$p,$e) = explode(" # ",$buffer);
$insertValue[] = "('$u','$p','$e')";
if ($i% $perpage == 0){ $perpage == 0){
$instrtValueString = implode(',',$insertValue);
mysql_query("INSERT INTO csdn_userdb(username,password,email) VALUES $instrtValueString",$link);
echo $i."
";
$insertValue = array();
}
}
fclose($handle);
、マッチングが必要なユーザーデータを現地コマンドラインに導入してmsyql(できない自分のBaidu)に入り、実行します。mysql>source C:/Users/zhudong/Desktop/userdb.sql 3、スクリーニングユーザ比較プログラムを作成しました。コマンドラインで実行します。10時間以上走りたいですが、どうやってこのような基本的なものを調べるのか忘れられますか?修正後の方法は
, , ,
:
php.exe E:\usr\www\importcsdndb.php
:call to undefined function mysql_connect
php.ini
:
php.exe -c E:/usr/local/apache2/php.ini importcsdndb.php
です。総比較時間は25分です。前の10時間以上の実行に比べて、総重量名を上げることができます。この文章は駅長の皆さんに当駅のユーザーと比較して助けてほしいです。