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 :

Problème de mémoire avec les datasets


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 36
    Points
    36
    Par défaut Problème de mémoire avec les datasets
    Bonjour,

    Avant d'expliquer mon interrogation voici ma configuration :

    SQL SERVER 2000
    Visual Studio 2000 avec le framework 1.0

    Bon j'ai un programme en C# qui doit se brancher sur ma BD SQL afin de faire un select sur une table qui contient plus de 30 millions d'enregistrements.

    Le select va retourner environ 4 000 000 de lignes.

    Le problème est que ceci consomme énormément en mémoire lorsque je remplie mon dataset et j'ai souvent des out of memory sur mon poste de développement (ce qui est normal).

    Je vais faire rouler ce programme sur un serveur d'ici peu mais j'aimerais savoir qu'elle est la meilleure façon côté performance mémoire pour gérer le tous.

    Appeller une procédure stockée qui elle retourne le résultat ?

    Faire le select directement dans le programme C# ?

    Est-ce possible de créer un fichier XML dans SQL SERVER et par la suite je le chargerait dans mon dataset ?

    Bref toute idée serait la bienvenue avec un exemple de code si possible.

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    Je pense que la meilleurs solution c'est de ne pas traiter autant de lignes d'un coup. Si tu fais une IHM tes utilisateurs ne vont pas visualiser le résultat de millions de lignes, tu vas paginer et donc tu peux sûrement demander à la base pas plus de X lignes d'un coup. Si ce n'est pas destiné à l'affichage mais au traitement, la encore va falloir le découper si possible ou effectivement effectuer autant que faire se peut le boulot côté base de données.

  3. #3
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Appeller une procédure stockée qui elle retourne le résultat ?
    Oui, plus rapide que les requêtes!

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par fally Voir le message
    Oui, plus rapide que les requêtes!
    Sans commentaire... Et puis si... Tu n'as aucune information sur le contenu possible de la procédure, et tu arrives encore à dire qu'une procédure est plus rapide...

    Dans tous les cas, la bonne solution, c'est du traitement par lot (par une requête ou une procédure). Traiter 4 millions de lignes en une fois est une hérésie en terme de conception.
    Charge par exemple mille lignes, fais le traitement sur ces mille lignes, puis charger les mille suivantes, etc.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    rire....oui mais de toute facon une procédure stockée est plus rapide qu'une requête faisant la même chose! ou je me trompe?

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par fally Voir le message
    rire....oui mais de toute facon une procédure stockée est plus rapide qu'une requête faisant la même chose! ou je me trompe?
    Tout dépend de la requête, ça ne sert à rien d'être aussi catégorique...
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 36
    Points
    36
    Par défaut
    Merci de ces réponses ça confirme ce que je pensais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les DataSet
    Par Franck.H dans le forum Visual Studio
    Réponses: 0
    Dernier message: 08/01/2014, 14h20
  2. [GD] Problème de mémoire avec les grandes images en PHP
    Par bodysplash007 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 12/04/2007, 17h02
  3. [Crystal Report]Problème de mémoire avec le moteur RDC
    Par sur_uix dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/05/2005, 09h09
  4. Problème de mémoire avec BDE
    Par Machuet dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/07/2004, 10h11
  5. Comment bien gerer la mémoire avec les TStringList?
    Par david_chardonnet dans le forum Langage
    Réponses: 5
    Dernier message: 18/06/2003, 09h57

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