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 :

[SQL2005][SQLCMD] Problème de performance sur INSERT


Sujet :

MS SQL Server

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [SQL2005][SQLCMD] Problème de performance sur INSERT
    Bonjour,

    je travaille dans une équipe de 6 personnes faisant le même type de développement.
    Voilà ma question à laquelle nous ne trouvons (à 3) aucune réponse:

    Nous avons tous la même configuration logicielle mais pour 2 de nos machines (même modèle d'une marque très connue) qui ne sont pas les mêmes que les 4 autres, la même requête va mettre 6 FOIS PLUS DE TEMPS !

    Je ne souhaite aucun commentaire sur la façon d'insérer les données car je suis obligé de faire un insert par ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SET NOCOUNT ON
    GO
    select getdate();
    GO
    DELETE FROM TABLE;
    GO
    INSERT INTO TABLE(ID, ORDRE1,ORDRE2) VALUES(95816, 1, 1);
    GO
    INSERT INTO TABLE(ID, ORDRE1,ORDRE2) VALUES(95816, 1, 2);
    GO
    INSERT INTO TABLE(ID, ORDRE1,ORDRE2) VALUES(95817, 1, 1);
    GO
    .../...
    INSERT INTO TABLE(ID, ORDRE1,ORDRE2) VALUES(99695, 1, 2);
    GO
    select getdate();
    ainsi, ce fichier contient un peu 39000 enregistrements.

    Script lancé à l'aide d'un .bat contenant la commande: sqlcmd -S "%COMPUTERNAME%\SQLEXPRESS" -U "sa" -P "****" -d "DBNAME" -i "test_perf.sql" -o "test_perf.log"

    Voici le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    -----------------------
    2011-01-27 09:50:57.830
     
    -----------------------
    2011-01-27 09:53:52.470
    2' 55" ! Cette même opération sur les 4 autres machines prend moins de 30 secondes.

    et sur n'importe quelle table, qu'elle que soit le nombre de lignes à insérer, on a cette différence coeff 6.


    Voici la config de ces machines Proc Xeon 2.4; 2,5Go Ram; Disque SAS 150Go@15Krpm

    Les 4 autres machines ont des processeurs Core2Duo, quantité Ram identique ou supérieure et disque SATA


    Si une personne a une idée lumineuse, nous sommes preneurs.


    Merci, à bientôt, Laurent.

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Je continue le fil de la discussion depuis msdn

    Avez vous vérifié du côté antivirus ?
    Règles d'exclusions sur vos fichiers de bases de données (mdf, ldf)

    ++

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Je continue le fil de la discussion depuis msdn
    Merci d'être sur plusieurs fronts

    Citation Envoyé par mikedavem Voir le message
    Avez vous vérifié du côté antivirus ?
    Règles d'exclusions sur vos fichiers de bases de données (mdf, ldf)

    ++
    Non cette vérification n'avait pas été faite, merci
    Cependant.... Antivirus activé avec exclusion ou antivirus désactivé:
    ça ne change rien ! (gain de 3 sec sur 3 minutes)

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Ok pourriez vous fournir pour les résultats de cette requête pour les 2 cas de serveurs (pour un serveur rapide et un serveur qui pose problème) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SET STATISTICS IO ON;
    SET STATISTICS TIME ON;
     
    <votrescript.sql>
     
    SET STATISTICS IO OFF;
    SET STATISTICS TIME OFF;
    Pouvez également nous donner la DDL de votre table et des index associés.
    Merci

    ++

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre aide

    Voici donc la DDL de la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    CREATE TABLE [dbo].[MCH](
    	[ID] [numeric](8, 0) NOT NULL,
    	[ORDRE1] [numeric](5, 0) NOT NULL,
    	[ORDRE2] [numeric](8, 0) NOT NULL,
    PRIMARY KEY CLUSTERED 
    (
    	[ID] ASC,
    	[ORDRE1] ASC,
    	[ORDRE2] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
    ALTER TABLE [dbo].[MCH]  WITH CHECK ADD  CONSTRAINT [FK_MCH_HP] FOREIGN KEY([ID], [ORDRE2])
    REFERENCES [dbo].[HP] ([ID], [ORDRE2])
    GO
    ALTER TABLE [dbo].[MCH] CHECK CONSTRAINT [FK_MCH_HP]
    GO
    ALTER TABLE [dbo].[MCH]  WITH CHECK ADD  CONSTRAINT [FK_MCH_MC] FOREIGN KEY([ID], [ORDRE1])
    REFERENCES [dbo].[MC] ([ID], [ORDRE1])
    GO
    ALTER TABLE [dbo].[MCH] CHECK CONSTRAINT [FK_MCH_MC]
    celle de ses 2 index:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ALTER TABLE [dbo].[MCH] ADD PRIMARY KEY CLUSTERED 
    (
    	[ID] ASC,
    	[ORDRE1] ASC,
    	[ORDRE2] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
     
    CREATE NONCLUSTERED INDEX [IDX_ID_ORDRE2] ON [dbo].[MCH] 
    (
    	[ID] ASC,
    	[ORDRE2] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    Quant aux résultats de la requête pour les 2 cas de serveurs, j'ai récupéré les 2 logs d'un peu plus de 40mo chacun, je les ai compressé dans un zip que vous pouvez obtenir avec le lien se trouvant dans le mp envoyé.
    Les ayant regardé, je ne sais pas si ils vont beaucoup nous apprendre

    Merci !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Alors, petite correction : la machine qui pose souci à SQL Server tourne sur disque SCSI (et non SAS) connecté à un contrôleur sur bus PCI.
    Cependant, à 15Krpm, ceci n'explique pas celà et l'origine du problème reste à prouver.

    Un changement de machine a pallié le problème de performance. Celle-ci tourne sur disque SATA II 7200rpm.

    Cordialement, Laurent

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 52
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Avez vous regardé si vous aviez des erreurs ou warning lié aux I/O dans la log sql server ?
    Sur un serveur j'ai récemment rencontré des problèmes lié au process lazy writer qui étaient mis en attente. Il avait du mal à écrire sur le disque dans les délais impartis.
    Regardez vos log SQL Server pour éliminer cette éventualité et nous aiguiller sur d'autre piste.

    On part du principe que vos bases sont identiques sur tous vos serveurs (fichier de donnée + journaux). Est-ce bien le cas ?

    @+

Discussions similaires

  1. Problème de performances sur site PHP - Zend
    Par trashyquaker dans le forum Firefox
    Réponses: 2
    Dernier message: 08/09/2008, 21h44
  2. problème de performance sur requête avec Tsearch2
    Par Morpheas dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 05/02/2008, 12h25
  3. Problèmes de performances sur une base oracle 10g
    Par ORAMEL dans le forum Oracle
    Réponses: 3
    Dernier message: 11/09/2007, 09h11
  4. Réponses: 3
    Dernier message: 20/04/2007, 12h19
  5. Problème de performance sur une "grosse" BD
    Par frechy dans le forum Installation
    Réponses: 9
    Dernier message: 19/09/2005, 16h52

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