Copie en masse de DataTables vers MySQL avec des performances optimales
La migration de projets de Microsoft SQL Server vers MySQL peut rencontrer des défis en matière de copie de données en masse. En effet, l'API SqlBulkCopy commune trouvée dans le système Microsoft n'est pas directement disponible pour MySQL.
Alternatives de copie en masse
Une alternative serait d'utiliser la classe MySqlBulkLoader, mais cela implique d'exporter des données vers un fichier CSV puis de les importer, ce qui peut entraîner des goulots d'étranglement en termes de performances.
Méthode optimisée avec MySqlDataAdapter
Cependant, une approche plus efficace peut être exploité en utilisant la méthode Update() de MySqlDataAdapter dans une transaction. Cette méthode permet des insertions par lots avec des tailles de lots de mise à jour configurables, réduisant considérablement le temps d'exécution.
Exemple de code
Voici un exemple optimisé utilisant l'approche MySqlDataAdapter :
<code class="csharp">using (MySqlTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.Serializable)) { using (MySqlCommand cmd = new MySqlCommand()) { cmd.Connection = conn; cmd.Transaction = tran; cmd.CommandText = "SELECT * FROM testtable"; using (MySqlDataAdapter da = new MySqlDataAdapter(cmd)) { da.UpdateBatchSize = 1000; using (MySqlCommandBuilder cb = new MySqlCommandBuilder(da)) { da.Update(rawData); tran.Commit(); } } } }</code>
Comparaison avec MySqlBulkLoader
Par rapport à l'utilisation de MySqlBulkLoader, l'approche MySqlDataAdapter surpasse en termes de vitesse d'exécution. Les tests avec des insertions groupées de 100 000 lignes ont montré un temps d'exécution de 30 secondes à l'aide de MySqlDataAdapter, tandis que MySqlBulkLoader a terminé le processus en 5 à 6 secondes.
Conclusion
Pour Pour une copie en masse efficace de DataTables vers MySQL, envisagez d'utiliser la méthode Update() de MySqlDataAdapter dans une transaction. Cette approche offre des performances optimales sans avoir besoin d'exportations et d'importations CSV intermédiaires, ce qui se traduit par des migrations de données plus rapides et plus efficaces.
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!