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

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

WBOY
リリース: 2016-07-13 10:10:35
オリジナル
820 人が閲覧しました

php が mysql パフォーマンス最適化のヒント、mysql パフォーマンス最適化に大量のデータをインポートします

この記事の例では、大量のデータを PHP から MySQL にインポートするためのパフォーマンス最適化テクニックについて説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

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 万件のレコードを挿入するだけでテストしましたが、これに前の論理判断やその他の処理を追加すると、実際には 30 分はそれほど長くありません。それは不可能です。データベースへの書き込み数を減らす必要があるため、上記のコードは次のように変更されます:


コードをコピーします
コードは次のとおりです:$sql2="INSERT INTO ".$usertable." (tel,type,updatetime) VALUES"; for($i=0; $i {
$tmpstr = "'". $array[$i] ."','". $str ."'"; $sql2 .= "(".$tmpstr."),"; }
$sql2 = substr($sql2,0,-1) //最後のカンマを削除します
; mysql_query($sql2);

この方法では、書き込み操作全体が 1 回だけで実行されるため、15,000 件のレコードを完了するのにかかる時間は 10 秒近くになります。データを mysql に変換する場合は、この記事の最適化方法を試してみてはいかがでしょうか。

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。


http://www.bkjia.com/PHPjc/934937.html

www.bkjia.com

本当

技術記事 PHP が mysql パフォーマンス最適化手法に大量のデータをインポートする、mysql パフォーマンス最適化 この記事では、PHP が大量のデータを mysql パフォーマンス最適化手法にインポートする例について説明します。参考のためにみんなで共有してください。詳細な分析...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート