BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 octobre 2014
-
6 déc. 2012 à 14:27
BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 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.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 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...)
BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 octobre 201412 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.