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 15 fois plus lent que SQL2000 !


Sujet :

MS SQL Server

  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut SQL2005 15 fois plus lent que SQL2000 !
    Bonjour à tous,

    J'utilise VB6 et ADO2.8 pour manipuler ma base de données.

    Avec le même programme, sur le même ordinateur j'ai des différences de performance avec un AddNew puis Update sur un recordset :

    Si avec SQL2000 l'AddNew + update prend 1, avec SQL2005 le même l'AddNew + update prend 15 !

    A savoir,
    - La base de données est créée avec le même script sur les deux types de serveurs
    - Ce problème se produit aussi sur un autre ordinateur ayant la même configuration

    Quelqu'un a-t-il une idée ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    D'un autre côté Addnew on évites, il faut mieux préférer faire une requête ensembliste.

    Il faudrait plutôt voir les connexions et ouverture de recordset entre VB et SQL server. En plus VB6 commence à dater maintenant.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Bonsoir phili_b,

    Tout à fait d'accord avec toi, mais je ne vie pas dans un monde parfait.

    Mon monde à moi a plein de contraintes comme de travailler avec VB6 et comme être obliger de faire les ajouts un par un en récupérant la valeur du champ autoincrémentiel...

    Pour ce qui est de la connexion et de la méthode d'ouverture, je te dis cela demain dès que je suis au boulot.

    Bonne nuit

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Bonjour à tous,

    Voici plus d'informations sur mes connexions et la méthode d'ouverture :

    Pour SQL2005 :
    Version SQL : 09.00.3042
    Provider Version : 09.00.3042.00
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .LockType =adLockOptimistic 
    .CursorLocation =adUseServer 
    .CursorType =adOpenKeyset 
    .ActiveConnection.connectionstring = 
    Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SAV;Data Source=SYLVAIN9150\SQL2005;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SYLVAIN9150;Use Encryption for Data=False;Tag with column collation when possible=False;MARS Connection=False;DataTypeCompatibility=0;Trust Server Certificate=False

    Pour SQL2000 :
    Version SQL : 08.00.0760
    Provider Version : 08.00.1117

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .LockType =adLockOptimistic 
    .CursorLocation =adUseServer 
    .CursorType =adOpenKeyset 
    .ActiveConnection.connectionstring = 
    Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SAV2000;Data Source=SYLVAIN9150;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SYLVAIN9150;Use Encryption for Data=False;Tag with column collation when possible=False

  5. #5
    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
    Bonjour,

    Il faudrait avoir plus d'infos pour savoir ce qui se passe. La meilleur méthode est de tracer SQL Server avec le profiler. Ici des indications pour l'utiliser : http://rudi.developpez.com/sqlserver.../optimisation/

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Merci rubib

    Je regarde ton lien et te tiens informé.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Il faut savoir aussi que l'optimisation d'une base SQL Server 2000 et 2005 ce n'est pas la même chose, une bonne partie du moteur relationnel ayant été récrit.

    Autrement dit : un bon réglage donnant de bonne perf en SQL 2000 n'est pas forcément bon pour SQL Server 2005 !

    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/ * * * * *

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Bonjour à tous,

    Avec l'utilisation de SQL Server Profiler je constate une différence en 2000 et 2005

    La ligne suivante consomme en CPU, 15 avec 2005 et 0 avec 2000 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec sp_cursor 180154467,4,0,N'[PERSONNES]',@Nom='CHAPON Madame',@Prenom='',@Archive=0
    Auriez-vous une idée ?

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    C'est un update positionnel (WHERE CURRENT OF....) de curseur

    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/ * * * * *

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Voici une nouvelle requête qui consomme 15 (CPU) avec SQL2005 et 0 avec SQL2000

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    declare @p1 int
    set @p1=180154419
    declare @p3 int
    set @p3=1
    declare @p4 int
    set @p4=16388
    declare @p5 int
    set @p5=1
    exec sp_cursoropen @p1 output,N'Select * From SOCIETES_ADRESSES Where ID_SOCIETE = 248 And Upper(Nom) = ''DIAMETRE'' And AdrLivraison <> 0',@p3 output,@p4 output,@p5 output
    select @p1, @p3, @p4, @p5
    Les plans d'éxécutions sont en pièces jointes.
    Quelqu'un pourrait-il m'expliquer ces deux plans ? Ils sont très différents malgré une base identique et une requête identique.
    Peut-être que l'explication de la lenteur de SQL2005 est dans le plan ?

    Merci d'avance
    Images attachées Images attachées   

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    C'est un update positionnel (WHERE CURRENT OF....) de curseur

    A +
    Si le curseur se déplace, est-ce que les index peuvent avoir un role dans la lenteur ?

Discussions similaires

  1. Sur mobile, les Data URI sont 6 fois plus lentes que les requêtes HTTP
    Par rodolphebrd dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 30/07/2013, 10h32
  2. Réponses: 76
    Dernier message: 29/03/2011, 16h15
  3. parfor : 3 fois plus lent que for
    Par dword2add dans le forum MATLAB
    Réponses: 6
    Dernier message: 19/05/2010, 16h33
  4. [Firebird][Optimisation]Plus lent que le BDE!
    Par vincentj dans le forum Débuter
    Réponses: 3
    Dernier message: 07/02/2005, 15h48
  5. DBExpress est plus lent que BDE?
    Par palassou dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/07/2004, 08h39

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