IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Optimisation du temps d'insertion de données


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Inscrit en
    Septembre 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 12
    Par défaut Optimisation du temps d'insertion de données
    Bonjour,

    A l'installation de notre application, nous devons insérer un grand nombre de données dans la base SQL qui est vide.

    De façon à diminuer les temps de traitement, les index ne sont créés qu'après les insert.
    Toutefois en ayant testé les 2 solutions, je constate des différences de 15 sec entre les 2 solutions pour des ajouts de 400 000 lignes (durée d'insert 8 min 45 sec) ! Cela me parait bien peu ... Dans cet exemple, 5 index sont concernés dont 1 index trié (où les données sont insérées déjà triées).

    Une autre piste d'optimisation a été explorée, à savoir les transactions.
    Il ne nous est pas necessaire de pouvoir revenir à l'état initial en cas d'erreur.
    En supprimant toutes les transactions, le temps d'import est plus long !
    L'application (déjà en production) fonctionne actuellement avec des transactions ouvertes et commitées toutes les 100 lignes.
    Y'a-t-il intérêt à augmenter ce nombre de lignes ? à le diminuer ? A-t-on une chance de diminuer le temps d'import en changeant les transactions utilisées ?

    Ou pouvons-nous trouver un ordre d'idées sur le volume de lignes que SQL Server peut insérer dans une table à la seconde, si cette ligne est simple (uniquement une dizaine d'entiers par record). Il parait évident que le nombre de lignes traitées ne peut être constant au fur et a mesure que le nombre de lignes déjà présentent dans la base augmente.

    Pouvez vous me dire s'il est nécessaire (ou même interessant) de créer un index sur les champs de la clé primaire pour optimiser les recherche sur des filtres sur cette clé ?

    Merci beaucoup de vos réponses, si il y a d'autres pistes d'optimisations, je suis tout prêt à les étudier..

    J. DUVAL

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Commencez à créer des bases de données dont les fichiers sont LARGEMENT dimensionnés et de taille fixe, de manière a accepter le volume à terme (dans 3 ans) des données de la base.

    Cela améliorera spectaculairement vos imports massifs.

    Désactivez vos contraintes et index si possible avant insertion et réactivez les après...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Autre solution : utiliser du BULK INSERT depuis des fichiers d'export plutôt que de faire des INSERT ligne après ligne.

    d'où vient la source ??

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/01/2009, 14h21
  2. Optimisation insertion de données
    Par brice44 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/08/2007, 17h08
  3. optimisation d'insert de données
    Par barabas123 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 28/08/2007, 16h19
  4. Réponses: 4
    Dernier message: 09/07/2007, 12h03
  5. [SGBD]Optimiser le temps d'accès aux données (schéma BD)
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 08/10/2004, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo