StackOverflowはこれまでに多くの質問に答えましたが、私は正確な答えを見つけることができなかったより具体的なものを探しています。PHP/MySQLとDoctrineの複数の挿入に関するベストプラクティス
私は現在Doctrine 1.2.2でPHP/MySQLを使用していますが、私のスクリプトを改善することを楽しみにしています。実際には、データベースに5分ごとに約300のエントリが追加されます。実際には、このスクリプトはdoctrineではなく、mysql multi-insertを使用しています。
私は、より良い、より速く、より少ないリソースを使用しているのだろうかと思っていました。 ありがとうございます。
最初の編集とテスト
OK、みんな、最初のものを初:)
私は唯一のMySQLステートメントを使用して最初に試してみました。 FabrizioはINSERT DELAYEDの使用を提案しましたが、私はinnoDBを使用しているので利用できません。
私は、実行する必要のある各ジョブを3回実行するMySQLステートメントを使用していくつかのテストを実現しました。最初のジョブでは、実行に平均53秒かかる6.25Mbを使用しました(ここでは138ページをロードすることを覚えておいてください)
2番目のジョブでは、4.25Mbを使用して平均3分30秒私は4.75メガビットを使用して、3分9秒の平均を受信した第3ジョブの場合)ここで
を510ページをロードしている(私はここでは410ページをロードすることを覚えておいてください)
私は変換することができた最初の仕事Doctrineを実行して、同じ時間(53秒)実行しますが、9.75 Mbを使用します。 DoctrineはDUPLICATE KEYをサポートしておらず、replace()を使うとForeign Keyのために以前に追加されたデータが失われ、replace()は実際には古い値を削除して新しい値を追加するので、 。
このテストでは、私はまだMySQLのクエリの複数の挿入を使用します。どのモードのアイデアをテストする?あなたのすべて:)
詳細を教えてください。なぜ300のエントリを挿入していますか?どのようなタイプのデータですか? –
複数のWebサイトからコンテンツを読み込んでテーブルを更新します。整数、浮動小数点および文字列フィールドがあります。 – guiligan