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

C# Discussion :

La connexion est très lente avec SQL Server


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut La connexion est très lente avec SQL Server
    Bonjour
    J'ai fait une application avec C #, WPF, LINQ et SQL Server 2008.

    L'application est installée dans de nombreux PC et la base de données est distante du serveur.

    L'application est installée dans deux départements dans une entreprise. Si le serveur dans un de ce département. la connexion avec le serveur dans l'autre département est lent et l'affichage des informations de base de données dans un datagrid cela prend du temps pour afficher la fenêtre ... Même la boîte autocomplete avec les noms des clients de cette société font de temps pour afficher les noms lors du tapper le premier caractère

    Je ne sais pas où est le problème. J'ai même requête mauvais et j'ai fixé certaines d'entre elles, mais il ya une certaine table juste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dg.itemssource = connexion.client.select (a => a);
    et cela prend du temps: /

    PS: au début de l'application n'était pas lent, mais après 6 mois d'utilisation, il est devenu mauvaise ... lorsque les données dans la table de la base sont devenus plus gros (le nombre de clients ou le nombre des enregistrements) que la demande devient plus lente!

    Qu'est-ce que j'ai à faire.

    Désolé de vous ennuyer avec tout ce texte .... mais je tiens à expliquer le problème que j'ai.
    Je vous remercie.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    si ca marchait bien au début et que c'est lent avec des données ca veut dire que le schéma de base de données est "pourri" ou alors que les requêtes sont très mal écrites
    une base de données n'est pas juste un système de stockage et nécessite de bien le comprendre pour faire une structure performante

    par exemple une clé primaire doit être un entier auto incrément

    néanmoins c'est peut être juste des indexes qu'il te manque

    pour être sûr du problème, tu peux regarder le temps d'exécution d'une requête sans compter le temps de rapatriement des données
    soit avec un system.diagnostics.stopwatch autour du executenonquery/executereader (du moins si tu exécutes les requetes toi même, car je penses que tu passes par entity framework)
    soit avec sql server profiler

    NB : entity framework de visual studio 2008 n'est pas réputé pour être ultra performant

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut
    néanmoins c'est peut être juste des indexes qu'il te manque
    j'ai pas idée a propos des indexes peut tu m'expliquer !!

    (du moins si tu exécutes les requetes toi même, car je penses que tu passes par entity framework)
    j'utilise Linq-to-sql pour connecté a la base de donnée

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    un index c'est comme dans un livre (à la fin t'as 2 pages d'index pour trouver le numéro de page de quelque chose) ou une rue (les numéros sont dans l'ordre)
    quand tu recherches une définition dans un dictionnaire (on va situer ca à avant l'apparition de wikipedia ^^), si tu cherches le mot "tutoriel", tu vas tourner les pages par bloc pour arriver aux T puis plus doucement avant d'arriver à lire la page
    tu ne lis pas tout le dictionnaire

    prenons le cas sql de :
    select * from table where champ3 = 8

    si tu as 100000 lignes, sans index sql server va lire les 100000 lignes pour voir si champ3 = 8
    si tu mets un index sur champ3 dans la table, sql server au lieu de lire les 100k lignes va lire l'index et donc ne lire au final que quelques dizaines de lignes
    donc un temps d'exécution énormément plus court (j'ai vu des requetes passer de 45 secondes à 2 secondes avec un index)

    par contre un index ca ne s'improvise pas non plus, je te conseille de lire un cours sur les indexes
    parce que lors d'un insert ou d'un update, en plus d'ajouter/modifier les données, ca va modifier l'index, et parfois le retrier, et donc créer une pertes de temps
    il est possible de faire des indexes multicolonnes, ou plusieurs indexes monocolonne, de faire indexes contenant des colonnes non triées (include)
    indexer un varchar est parfois couteux
    il existe des index clustered (ordonnés physiquement et non logiquement), modifier une valeur sur un index clustered est très couteux (un index clustered est créé par défaut sur le champ clé primaire dans sql server, c'est pour ca qu'il faut un champ auto incrément)
    etc...

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    par contre un index ca ne s'improvise pas non plus, je te conseille de lire un cours sur les indexes
    Merci je cherche quelque cours pour les indexes.

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2016, 14h26
  2. Réponses: 0
    Dernier message: 24/10/2014, 09h32
  3. [Débutant] Connexion Visual studio C# avec SQL server
    Par arngrimur dans le forum C#
    Réponses: 5
    Dernier message: 04/07/2011, 12h27
  4. connexion Delphi avec SQL Server en réseau
    Par da_latifa dans le forum Bases de données
    Réponses: 4
    Dernier message: 22/11/2005, 14h24
  5. [JDBC]connexion avec sql server
    Par ridondo dans le forum JDBC
    Réponses: 1
    Dernier message: 26/09/2005, 22h37

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