Maison  >  Article  >  développement back-end  >  solution simultanée php mysql

solution simultanée php mysql

藏色散人
藏色散人original
2020-08-12 09:40:532770parcourir

Comment résoudre la concurrence PHP mysql : 1. Insérez plusieurs éléments de données avec une seule instruction SQL ; 2. Modifiez l'instruction d'insertion en "INSERT INTO `insert_table` (`datetime`, `uid`, `content` , `tapez `)".

solution simultanée php mysql

Recommandé : "Tutoriel vidéo PHP"

Dans les projets, on rencontre souvent Quand il s'agit de problèmes de concurrence élevée, par exemple, si 100 personnes modifient les mêmes données à un moment donné, cela entraînera des problèmes et les données résultantes seront inexactes. Les méthodes habituelles pour résoudre la concurrence élevée incluent l'ajout de cache lorsque. lecture de données, écriture Ajoutez-le à la file d'attente lorsque les données sont saisies. Voici quelques méthodes courantes pour gérer une concurrence élevée, pour votre référence.

1. Optimisation de l'insertion par lots MySQL

Pour certains systèmes avec de grandes quantités de données, en plus de la faible efficacité des requêtes, la base de données est confrontée à des problèmes tels qu'une longue durée de stockage des données. En particulier pour les systèmes de reporting, le temps consacré à l'importation des données peut durer plusieurs heures, voire plus de dix heures par jour. Il est donc logique d’optimiser les performances d’insertion des bases de données.
Après quelques tests de performances sur MySQL innodb, j'ai trouvé quelques méthodes qui peuvent améliorer l'efficacité des insertions pour votre référence.

1. Une instruction SQL insère plusieurs éléments de données.
Les instructions d'insertion couramment utilisées telles que :

INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) 
    VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) 
    VALUES ('1', 'userid_1', 'content_1', 1);

sont modifiées en :

INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) 
    VALUES ('0', 'userid_0', 'content_0', 0), ('1', 'userid_1', 'content_1', 1);

L'opération d'insertion modifiée peut améliorer l'efficacité d'insertion du programme. La principale raison pour laquelle l'efficacité de l'exécution du deuxième SQL est élevée ici est que la quantité de journaux après la fusion (le journal binlog de MySQL et les journaux de transactions d'innodb) est réduite, ce qui réduit le volume de données et la fréquence de vidage des journaux, améliorant ainsi l'efficacité. En fusionnant les instructions SQL, cela peut également réduire le nombre d'instructions SQL analysées et réduire les E/S de transmission réseau.
Voici quelques données de comparaison de tests, qui consistent à importer une seule donnée et à la convertir en une instruction SQL pour l'importation, et à tester respectivement 100, 1 000 et 10 000 enregistrements de données.

solution simultanée php mysql

Vous pouvez également effectuer un traitement d'insertion dans une transaction.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn