Mysql - PHP が 100,000 個のコンテンツをバッチで挿入すると、メモリが 128MB にバーストします。
PHPz
PHPz 2017-06-05 11:07:07
0
3
753

レコードをバッチで生成し、一度に 100,000 個のコンテンツを生成するビジネス設計があるため (コンテンツのほとんどは同じで、一部のフィールドはランダム コードを生成する必要があります)、何を行う必要がありますか?

PHPz
PHPz

学习是最好的投资!

全員に返信 (3)
左手右手慢动作

非同期とかループとか言ってる人は、個人的には無理があると思う
データが10万件もあれば、たとえメモリが十分に大きくてもデータベースにデータを格納する(IOフロー)のに時間がかかる。 、トランザクションの送信がうまく処理されなかったとしても、データベースはメモリを占有します。

最も早い方法は、データベースに直接データを生成することです
ID テーブルを自分で生成し (ID の 1 つのフィールドのみが保存されます)、100,000 のエントリ (0-10w) を記録します
Mysql メソッド:

リーリー
いいねを押す+0
    Peter_Zhu

    本当にバッチで処理したくないのですが、ini_set(''memory_limit', '256M');?または、サーバーのメモリが不足している場合は、512M に設定します

    いいねを押す+0
      Peter_Zhu

      1. 生成されたデータがチェーン構造で保存されている場合、データのほとんどが同じである場合は、キー値を使用して同じデータを保存し、サブ異なるデータを保存するためのキー値 (つまり、相違点を保持しながら共通点を探す)
      など
      array (0=>array('data'=>array('name'=>'t','age') =>'14),'key'=>array('1','2' ,'3','4')));
      foreach($array as $val) {

      リーリー

      }

      2. 一度に 10 個のデータを保存すると、MySQL サーバーへの負荷が高くなります。
      insert into table names('t','a',1),(' などの挿入コードを最適化することをお勧めします。 t','a',2)

      3. 取引を開始し、データを定量的に送信することをお勧めします

      いいねを押す+0
        最新のダウンロード
        詳細>
        ウェブエフェクト
        公式サイト
        サイト素材
        フロントエンドテンプレート
        私たちについて 免責事項 Sitemap
        PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!