Étant donné qu'il existe une conception commerciale qui génère des enregistrements par lots et génère 100 000 éléments de contenu à la fois (la plupart du contenu est le même et certains champs doivent générer des codes aléatoires), que faut-il faire ?
Ceux qui parlent d'utilisation de l'asynchrone et du bouclage pensent personnellement que c'est déraisonnable
.Avec 100 000 données, même si votre mémoire est suffisamment grande, il faudra beaucoup de temps pour stocker les données dans le fichier. base de données (flux IO), même si la transaction Si la soumission n'est pas bien traitée, la base de données occupera également de la mémoire
Le moyen le plus rapide est de générer des données directement dans la base de données.
Générez vous-même une table d'identifiant (un seul champ d'identifiant est stocké), enregistrez 100 000 entrées (0-10w)
méthode mysql. :
Je ne veux vraiment pas le traiter par lots, ini_set(''memory_limit', '256M');? Ou si la mémoire de votre serveur n'est pas limitée, réglez-la sur 512 M
1. Si les données générées sont stockées dans une structure en chaîne, il est recommandé d'optimiser la structure des données. Si la plupart des données sont les mêmes, vous pouvez utiliser des valeurs clés pour enregistrer les mêmes données, puis utiliser des sous-données. valeurs clés pour enregistrer différentes données (c'est-à-dire rechercher un terrain d'entente tout en réservant les différences)
Tels que
array (0=>array('data'=>array('name'=>'t','age' =>'14),'key'=>array('1','2' ,'3','4')));
foreach($array as $val) {
}
2. Enregistrer 10 éléments de données à la fois exercera plus de pression sur le serveur MySQL. Il est recommandé d'optimiser le code d'insertion, tel que
insérer dans les valeurs de la table('t','a',1),('. t','a',2)
3. Il est recommandé d'ouvrir les transactions et de soumettre les données de manière quantitative