2012-08-17 1 views
0

Mon application copie simplement une table de la base de données locale vers un serveur de base de données distribuée. Les données à copier sont assez importantes pour un millier d'enregistrements et ont terminé les travaux pendant une trentaine d'années (je ne sais pas exactement combien de temps il faut exactement). Cette application est exécutée sur l'entrée programmée ou utilisateur (méthode de la force).Meilleure façon d'utiliser la mémoire et l'utilisation du processeur

Le serveur de base de données utilise JHA (Jack Henry and Association). Le problème est que parfois le serveur de base de données subit une utilisation CPU et mémoire très élevée, ce qui entraîne l'échec de certaines applications utilisant le même serveur de base de données à extraire des données de la base de données. Après avoir fait quelques traces, nous avons découvert que l'opération qui provient de mon application utilise un processeur et une utilisation mémoire très élevés. Ma solution est lors de la copie des données, im copier 100 enregistrement en même temps, puis mon mettre mon application pour dormir pendant 100ms, puis en copiant l'enregistrement 100 suivant, et ainsi de suite jusqu'à ce que toutes les données sont copiées. Est-ce assez? Est-ce que ma solution aura un effet significatif? Quelle est votre suggestion? FYI, mon application est exécutée à partir de plusieurs ordinateurs, donc plusieurs ordinateurs clients et un serveur de base de données. Et je vraiment-vraiment besoin de votre aide ici :)

+0

raisonner sur les performances est difficile, sans un code source de base dépouillé, il devient annulable ... Utilisez-vous des transactions? Est-ce lan/wan/internet? quelle pile technologique? qu'est-ce qu'il y a dans un enregistrement? Combien de champs, quel type? – rene

+0

Je ne pense pas, jusqu'ici j'ai lu le code source (je ne le construis pas à partir de zéro, c'est une application existante, et le créateur initial est démissionné il y a longtemps) c'est juste une connexion de base de données sans aucune transaction, FYI this l'application utilise VB.Net 2.0. L'enregistrement contient des données financières du client, il a environ 20 champs, il a varchar, int, et le type numérique. Mon idée est de donner au serveur de base de données quelques fois pour faire d'autres choses (c'est ce que le sommeil pour), de sorte que le serveur de base de données peut faire fonctionner à partir d'une autre application. C'est suffisant? Quelle est votre suggestion? – Hendra

+0

Je vous suggère de cesser de deviner. Je ne voudrais pas déranger à quel point l'autre serveur est occupé. C'est leur problème. – rene

Répondre

0

Bien que ce lien http://msdn.microsoft.com/en-us/library/ff649152 est à la retraite, il est l'orientation processus général est toujours utile pour clouer les problèmes de performance.

Également investir dans certains outils. VS est livré avec certains outils d'analyse de performance, le SDK en possède et vous pouvez utiliser PerfView http://www.microsoft.com/en-us/download/details.aspx?id=28567. Vous devez également regarder votre plate-forme DB. Que se passe-t-il ici? Peut-être un index manquant? ou un index inutilisé?

  1. Quel est votre objectif de performance?
  2. mesure, une ligne de base,
  3. mener des enquêtes, générer des options,
  4. mettre en œuvre un (seul)
  5. mesure à nouveau.
  6. Vous avez gagné quelque chose? Non, rollback 3, choisissez l'option suivante ou 2 si vous ne le faites pas
  7. Vous avez atteint l'objectif de performance? Non, goto 3.
+0

l'article contient de grandes informations pour ma référence, cependant mon application elle-même ne pose pas le problème ici. mon application est en cours d'exécution sur l'ordinateur client, il fait beaucoup de requête au serveur de base de données. l'utilisation de mon application sur l'ordinateur client est faible, mais le serveur de base de données ayant une utilisation élevée du processeur et de la mémoire car il effectue des requêtes depuis mon application, avez-vous obtenu l'image? Je ferai votre instruction, et j'espère que je peux trouver le problème et le réparer – Hendra

Questions connexes