Optimiser l'insertion de lignes MySQL : réaliser une insertion en masse ultra-rapide
Dans cet article, nous abordons le besoin d'insertion de lignes efficace dans un MySQL base de données. Nous présentons une solution optimisée qui réduit considérablement le temps d'insertion, améliorant ainsi les performances globales de la base de données.
Contexte
De nombreux développeurs rencontrent des goulots d'étranglement en termes de performances lors de l'insertion de gros volumes de données dans MySQL. Bien que les approches basées sur des boucles utilisant des instructions SQL individuelles soient fonctionnelles, elles peuvent être inefficaces et lentes.
Énoncé du problème
Dans l'exemple fourni, le code basé sur les boucles prend 40 secondes pour insérer 100 000 lignes dans une base de données MySQL, soulignant la nécessité d'une solution plus efficace
Solution
Nous remplaçons l'approche basée sur les boucles par une technique d'insertion en masse utilisant un StringBuilder pour construire une seule instruction SQL contenant plusieurs lignes à insérer en même temps . En utilisant cette approche, nous obtenons des améliorations significatives des performances.
Exemple de code
Le code optimisé est fourni ci-dessous :
public static void BulkToMySQL() { string ConnectionString = "server=192.168.1xxx"; StringBuilder sCommand = new StringBuilder("INSERT INTO User (FirstName, LastName) VALUES "); using (MySqlConnection mConnection = new MySqlConnection(ConnectionString)) { List<string> Rows = new List<string>(); for (int i = 0; i < 100000; i++) { Rows.Add(string.Format("('{0}','{1}')", MySqlHelper.EscapeString("test"), MySqlHelper.EscapeString("test"))); } sCommand.Append(string.Join(",", Rows)); sCommand.Append(";"); mConnection.Open(); using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection)) { myCmd.CommandType = CommandType.Text; myCmd.ExecuteNonQuery(); } } }
Résultats
En utilisant l'approche d'insertion groupée, le temps d'insertion pour 100 000 les lignes passent de 40 secondes à seulement 3 secondes, démontrant une amélioration remarquable des performances de 93 %.
Considérations supplémentaires
Conclusion
En implémentant cette technique d'insertion groupée, les développeurs peuvent améliorer considérablement l'efficacité de leurs opérations d'insertion de base de données MySQL. Cette méthode réduit le temps d'insertion, améliore les performances globales et garantit l'intégrité des données avec une mesure de sécurité supplémentaire.
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!