Insert Multiple

BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 - 6 déc. 2012 à 14:27
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 - 6 déc. 2012 à 20:57
Bonjour à tous.

j'ai à insérer dans une des tables ( clé primaire sur 5 champs texte... no comment, 20 millions d'enregistrements, des triggers plein les poches) de ma base de données (sql server 2008), un certain nombre d'enregistrement lors d'un traitement.

D’après les premiers jeux de tests, cela va de 50 à 15000, mais il se peut que ça soit beaucoup plus.

Vaut il mieux en terme de performance sql (charge mémoire, temps d’exécution...) :
-envoyer 15000 insert dans ma base de données ?
- exécuter 15000 fois une procédure stockées qui s'en occupe ?
- faire les insert dans une table tampon et exécuter puis un seul insert dans la table ?
- faire 15 insert multiples de 1000 enregistrements (1000 étant la limite de sql) ?
- faire un insert via un fichier ? (bulk)


J'ai fait quelques tests déjà, et j'ai des soucis de compilation de requête. Peut on enregistrer un plan d’exécution advitam dans la base et forcer un requête a l'utiliser ? Et donc supprimer le temps de compilation.

Bref, si certain on déjà eu ce genre de problématique, je suis tout ouïe.


BasicInstinct

2 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
6 déc. 2012 à 20:22
Salut,

as-tu pensé à faire un package SSIS (integration service)

En mode design (sans aucun code), tu crées ta connexion, ensuite
tu lui donnes la source (table,fichier,excel,bande) puis la destination (avec éventuellemnt un mappage de colonnes)

Ensuite tu crée un job de base de donnée et tu importe le package depuis MSDB.

Le reste, c'est le moteur SQL qui s'en charge (QUEUE, ASYNCHRONE, GESTION MEMOIRE ECT...)

Bye...
0
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
6 déc. 2012 à 20:57
Mon problème est en faite beaucoup plus vaste. J'ai extrait une partie "problématique", essentiellement causé par un architecture de base bidon.
Mon Process (webService c#) complet mettait près de 30 minutes à s’exécuter. je suis tombé à près de 5 minutes,mais cette partie la met à elle toute seule 1m30 environ, dont la moitié en exécution SQL, le reste c'est de l'application des règles métiers de validation.

Je veux garder une certaine cohérence dans l’exécution, donc rester sur de l'appel de requêtes ou de SP, quitte à sacrifier quelques secondes.


BasicInstinct
0
Rejoignez-nous