Maison  >  Article  >  développement back-end  >  Comment puis-je optimiser les opérations d'insertion en masse dans MS SQL Server à l'aide de pyodbc ?

Comment puis-je optimiser les opérations d'insertion en masse dans MS SQL Server à l'aide de pyodbc ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 22:44:30422parcourir

How can I optimize bulk insert operations in MS SQL Server using pyodbc?

Optimisation des opérations d'insertion en masse dans MS SQL Server à l'aide de pyodbc

Le défi de l'insertion efficace de gros volumes de données dans MS SQL Server à partir du code Python l'utilisation de pyodbc nécessite un examen attentif. Bien que l'exécution itérative d'insertions individuelles puisse sembler simple, elle peut entraîner d'importants goulots d'étranglement en termes de performances, en particulier lorsqu'il s'agit de jeux de données de plus de 1 300 000 lignes.

Une solution potentielle consiste à exploiter la commande T-SQL BULK INSERT, qui peut considérablement accélérer l’ingestion de données. Toutefois, cette approche nécessite que le fichier de données soit situé sur la même machine que l'instance SQL Server ou dans un emplacement réseau accessible au serveur. Si cette condition ne peut pas être remplie, des options alternatives doivent être explorées.

Exploration de la fonctionnalité Fast ExecuteMany de pyodbc

Pyodbc version 4.0.19 introduit une puissante technique d'optimisation des performances : Curseur# fast_executemany. En activant cette fonctionnalité, la connexion à la base de données peut exécuter plusieurs exécutions de paramètres par lots en un seul aller-retour vers le serveur.

Pour utiliser fast_executemany, ajoutez simplement la ligne suivante à votre code :

<code class="python">crsr.fast_executemany = True</code>

Ce paramètre peut améliorer considérablement la vitesse d'insertion. Lors d'un test de référence, 1 000 lignes ont été insérées dans une base de données en un peu plus d'une seconde avec fast_executemany activé, contre 22 secondes sans cette optimisation.

Optimisation de l'exécution des boucles

En plus d'utiliser fast_executemany, il existe des stratégies supplémentaires pour affiner les performances d'exécution de votre boucle.

  • Listes de paramètres par lots : Au lieu d'itérer sur les lignes et d'exécuter des instructions d'insertion individuelles , envisagez de regrouper les données en lots et d'utiliser executemany pour insérer plusieurs lignes simultanément.
  • Insertion groupée à l'aide de Pandas DataFrames : Si les données source sont stockées dans un Pandas DataFrame, vous pouvez utiliser to_sql( de pyodbc). ) méthode pour effectuer une opération d’insertion en masse. Cette méthode peut améliorer considérablement les performances en tirant parti de techniques d'insertion optimisées spécifiques à la base de données.
  • Regroupement de connexions à la base de données : Si vous prévoyez de traiter plusieurs requêtes simultanées, envisagez de mettre en œuvre un regroupement de connexions pour réduire la surcharge associée à l'ouverture. et fermer les connexions à la base de données.

En mettant en œuvre ces optimisations, vous pouvez considérablement accélérer le processus d'insertion de gros volumes de données dans MS SQL Server à l'aide de pyodbc.

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