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