none
Problème de performance sur INSERT avec SQL Server Express 2005 RRS feed

  • Discussion générale

  • 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: 

    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:

          
    -----------------------
    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 et disque SATA

     

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

     

    Merci, à bientôt, Laurent.

     

    jeudi 27 janvier 2011 14:25

Toutes les réponses

  • Bonjour,

    Difficile de vous dire comme cela ...

    Quelle config RAM pour vos machines ? Avez vous exactement les mêmes configurations pour vos serveurs ? (Mêmes applications, même paramétrage d'instance SQL Server , même quantité de mémoire allouée pour SQL Server, même configuration au niveau de la répartition de vos fichiers de bases de données etc ...)

    Permettez moi juste un commentaire sur votre procédure .. Personnellement je remplacerai :

    DELETE FROM TABLE;
    

     

    TRUNCATE TABLE TABLE;
    

    Bien sûr cela ne marchera que si votre table n'est pas concernée par une clé étrangère.

    ++

    par
    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1
    vendredi 28 janvier 2011 08:02
    Modérateur
  • Bonjour et Merci pour votre réponse,

    Concernant le hard, les 6 machines sont relativement équivalentes entre elles avec minima du Core2duo et 2go ram, la différence existante (évidente) entre les 2 machines posant souci et les autres, c'est le contrôleur disque, il y en a 4 en contrôleur Sata et 2 en contrôleur SAS. Ce qui est d'autant plus étonnant puisque les disques Sata sont de simples 7200rpm alors que les disques Sas sont des 15000rpm.

    Concernant la configuration, nous avons tout vérifié, même applications, même version, même paramétrage, quantité de mémoire allouée modifiée et remodifiée, fichier initial de base de données élargi ... après 1 journée complète à 2, nous sommes à cours d'idée

    Merci pour le commentaire. mais les colonnes ORDRE1 et ORDRE2 sont des clés étrangères et les 3 colonnes constitue la clé primaire.

    à bientôt, Laurent.

    vendredi 28 janvier 2011 08:32
  • et côté antivirus ? Avez vous les mêmes règles d'exclusion concernant les fichiers mdf et ldf sur vos serveurs ?

    ++


    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1
    vendredi 28 janvier 2011 09:06
    Modérateur
  • 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)

    vendredi 28 janvier 2011 09:51
  • 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

    mardi 1 février 2011 14:47
  • Quel débit sur votre bus PCI ?
    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1
    vendredi 18 février 2011 15:23
    Modérateur