レコードをバッチで生成し、一度に 100,000 個のコンテンツを生成するビジネス設計があるため (コンテンツのほとんどは同じで、一部のフィールドはランダム コードを生成する必要があります)、何を行う必要がありますか?
ringa_lee2017-06-05 11:09:07
非同期とかループとか言ってる人は、個人的には無理があると思う
データが10万件もあれば、たとえメモリが十分に大きくてもデータベースにデータを格納する(IOフロー)のに時間がかかる。 、トランザクションの送信がうまく処理されなかったとしても、データベースはメモリを占有します。
最も早い方法は、データベースに直接データを生成することです
ID テーブルを自分で生成し (ID の 1 つのフィールドのみが保存されます)、100,000 のエントリ (0-10w) を記録します
Mysql メソッド:
天蓬老师2017-06-05 11:09:07
本当にバッチで処理したくないのですが、ini_set(''memory_limit', '256M');?または、サーバーのメモリが不足している場合は、512M に設定します
天蓬老师2017-06-05 11:09:07
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. 取引を開始し、データを定量的に送信することをお勧めします