ホームページ >バックエンド開発 >PHPチュートリアル >PHP が大量のデータを mysql にインポートするパフォーマンスの最適化_PHP チュートリアル

PHP が大量のデータを mysql にインポートするパフォーマンスの最適化_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:06:41985ブラウズ

mysql では、php を組み合わせて mysql にいくつかのファイルをインポートします。インポート時の 15,000 レコードの分析と最適化を共有します。


過去に、Tiandi が最近、電話番号を数える小さなプロジェクトを友人に手伝っていると述べた記事がいくつかありました。そのたびに、パッケージ化された電話番号がニーズに応じてデータベースからランダムに生成され、人々は絶えず電話をかけてきました。製品を販売するための電話番号です (そのような行為は少し軽蔑されます)。でも、友達が助けを求めてきたら、私たちも助けないといけないですよね?プログラムは2週間前に完成し、テスト後に引き渡された。数日前、友人から電話があり、電話番号のインポートに毎日時間がかかっている、10,000 件のレコードをインポートするのに 30 分以上かかることがある、ということを改善する方法を見つけたいとのことでした。スピード。

データベースの構造は非常に単純で、1 つのフィールドには電話番号が格納され、もう 1 つのフィールドにはカテゴリが格納されていると考えられます。 . はそれぞれ、この電話がダイヤルされていないこと、この電話がダイヤルされていないことなどを表します。プログラム全体のロジックは次のとおりです。

■電話番号が記載されたtxtファイルを受け取りました

■プログラムを通じてtxtファイルをmysqlにインポートします
■インポート時にtxtの電話番号とmysqlの電話番号が重複していないか確認し、重複していない場合は直接新規レコードを挿入してください。所属しています。
インポート時にテキスト内の各電話番号を比較する必要があるため、プログラムに時間がかかることは間違いありません。この理由は今は置いといて、この記事のタイトルは書き込み速度の最適化であるため、プログラムはいつ書き込みますか。記録はどこにありますか?上記のロジックから、データベースを照合するときに、レコードが見つからない場合はデータベースへの書き込み操作が発生することがわかります (もちろん、更新も考慮されますが、ここでは挿入についてのみ説明します)。次に、上記のロジックを次のようなコードに変換します。

コードは次のとおりですコードをコピー
//$array は txt ファイルから展開された配列で、それぞれは電話番号、$str は型です

for($i=0; $i {
$tmpstr = "'". $array[$i] ."','". $str ."'";
$sql="INSERT INTO ".$usertable." (tel,type) VALUES (".$tmpstr.")";
mysql_query($sql);
}

上記のコードは完全に正しいですが、txt ファイルに数万の電話番号が含まれている場合、各データベース書き込み操作は非常に高速ですが、上記の操作は数万回行われます。アイテムが蓄積されるため、この実行時間は無視できません。 Tiandi は 1 億 5,000 万件のレコードの挿入を簡単にテストしましたが、所要時間は約 5 分でした。先ほどの論理的な判断やその他のプロセスを含めると、30 分は実際にはそれほど長くありません。これは不可能なので、データベースへの書き込み数を減らす必要があるため、上記のコードは次のように変更されます。

コードは次のとおりです$sql2="「.$usertable.」(tel,type,updatetime) 値に挿入";この方法では、書き込み操作全体が 1 回だけ実行されるため、15,000 レコードを完了するのにかかる実行時間が大幅に短縮されます。さて、この記事はここで終わります。MySQL への大量のデータの書き込みに時間がかかるという問題が発生した場合は、この記事の最適化方法を試してみるとよいでしょう。
コードをコピー
for($i=0; $i {
$tmpstr = "'". $array[$i] ."','". $str ."'";
$sql2 .= "(".$tmpstr."),";
}
$sql2 = substr($sql2,0,-1) //最後のカンマを削除します
mysql_query($sql2);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/630676.html技術記事 mysql では、php を組み合わせて mysql にいくつかのファイルをインポートします。インポート時の 15,000 レコードの分析と最適化を共有します。 以前にもいくつか記事がありましたが…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。