Optimisation de l'insertion en masse dans SQL Server avec client C#
Vous rencontrez des problèmes de performances lors de l'insertion de gros morceaux de données dans votre base de données SQL Server en utilisant SqlClient.SqlBulkCopy. Pour optimiser le processus, envisagez les solutions suivantes :
-
Désactiver la clé primaire : la suppression de la clé primaire lors de l'insertion peut améliorer considérablement les performances, car la base de données n'aura pas besoin de maintenir l'intégrité de l'index. lors de chaque insertion de ligne. Réactivez la clé une fois l'importation terminée.
-
Utiliser la table temporaire : pensez à créer une table temporaire avec le même schéma que la table cible. Insérez des données en masse dans la table temporaire, puis transférez périodiquement des lignes vers la table principale à l'aide d'un déclencheur de transfert. Cela maintient la taille de la table principale relativement petite pendant le processus d'importation.
Considérations supplémentaires :
-
Index non clusterisé : Si l'accès séquentiel aux données n'est pas crucial, envisagez d'utiliser un index de clé primaire non clusterisé au lieu d'un index clusterisé lors de l'importation. Cela permettra aux données d'être insérées plus efficacement.
-
Génération de données à distance : si les données sont générées sur des machines distantes, envisagez de déplacer le processus d'insertion en masse vers l'une des machines distantes pour réduisez la surcharge du réseau.
-
Désactivez les requêtes simultanées : assurez-vous qu'il n'y a pas de requêtes simultanées sur la table cible pendant l'importation pour éviter le blocage problèmes.
Ressources supplémentaires :
- [Désactiver/Activer les index](https://docs.microsoft.com/en-us/ sql/t-sql/statements/alter-index-transact-sql?view=sql-server-ver15)
- [Chargement groupé Comparaisons](https://dba.stackexchange.com/questions/141254/some-bulk-loading-speed-comparisons)
- [SqlBulkCopy Optimisation](https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlbulkcopy-methods?view=sql-server-2017)
- [Tableau Astuces](https://docs.microsoft.com/en-us/sql/t-sql/queries/hints/table-hints-transact-sql?view=sql-server-ver15)
- [ INSÉRER Déclaration](https://docs.microsoft.com/en-us/sql/t-sql/statements/insert-transact-sql?view=sql-server-ver15)
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!