|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Loïc JUSTINAdministrateur de base de données Inscription : novembre 2004 Messages : 234 ![]() |
Bonjour,
j'aimerais avoir une piste pour améliorer le temps de traitement sur un infocentre.En effet, au début, j'avais un temps de traitement de 30mn ce qui était raisonnable. Maintenant ce temps de traitement est passé à deux heures. Base Postgresql version 7.4.13 (Impossible de mettre à jour Pour information La mise à jour consiste à la récupération de fichier plat. (Cela fonctionne par lot de deux) 1) création d'une table temporaire 2) récupération des données dans un premier fichier pour mise à jour de la table temporaire 3) récupération des données du second fichier comparaison avec ce qui se trouve dans la table temporaire et mise à jour de la base si et seulement si on trouve bien une correspondance J'espère avoir été suffisamment clair. D'avance merci pour votre aide
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduits pas que c'est la cruche qui est vide. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Si la base continue d'augmenter, pas nécessairement étonnant que les temps de traitement augmentent au fur et à mesure. Avec le peu d'informations dont on dispose, c'est difficile de pouvoir vous aider plus que ça... Une première piste : les tables sont-elles correctement indexées ? Voici le lien vers un tutoriel pour vous aider : http://sqlpro.developpez.com/cours/quoi-indexer/ ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Loïc JUSTINAdministrateur de base de données Inscription : novembre 2004 Messages : 234 ![]() |
Bonjour,
Merci ced pour ta réponse. Mais, je connaissais déjà ce lien. Et je n'ai pas trouvé de piste d'amélioration. Petit complément d'explication L'infocentre permet d'afficher le bon fonctionnement des sauvegardes. Pour cela On a donc une table serveurs qui liste l'ensemble des serveurs sauvegardés une table "strategies" qui liste l'ensemble des stratégies sauvegardes en lien avec la table "serveurs" et une table "sauvegardes" qui liste l'ensemble des sauvegardes en lien avec la table "strategies". Lors de la mise à jour, si un serveur n'existe pas, il est créé, si une stratégie n'existe pas elle est créée,tout cela pour pouvoir insérer la nouvelle sauvegarde. Donc à chaque insertion, il y a d'abord une vérification pour savoir si existant. Est-ce que cela est plus claire?
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduits pas que c'est la cruche qui est vide. |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : mars 2005 Messages : 577 ![]() |
Bonsoir,
Tu passes par des tables temporaires pour mettre à jour des données si elles existent? Donc à priori je suppose qu'il y a pas mal de requêtes UPDATE et DELETE (voire DROP avec les tables temporaires)? As-tu regardé si ton serveur fait des vacuum tout seul? Si ce n'est pas le cas il faut peut-être envisager d'en faire (et faire un vacuum full de temps en temps): ça peut augmenter nettement les performances.
__________________
Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros! Code C :
|
||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Loïc JUSTINAdministrateur de base de données Inscription : novembre 2004 Messages : 234 ![]() |
Bonjour kain_tn
Merci pour ton aide. Je confirme qu'il y a beaucoup d'insert, update et de delete et qu'il y a régulièrement des vacuum pendant le traitement et à la fin du traitement. Mais on travaille avec une seule table temporaire qui est créée au début du traitement et supprimée à la fin.
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduits pas que c'est la cruche qui est vide. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
Bah sur de l'opti de process :
- identifier ce qui est "lent", ca n'est pas forcément 1 requête mais la répétition de certaine. - identifer les parties itératives => peut-on les changer pour faire de l'ensembliste (vous traitez des fichiers palt donc..?) |
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Loïc JUSTINAdministrateur de base de données Inscription : novembre 2004 Messages : 234 ![]() |
@Punkoff oui, effectivement, la mise à jour se fait à partir de fichier plat
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduits pas que c'est la cruche qui est vide. |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
Bein, prend ton process et trouve combien de temps chaque étape (lecture sequentiel, insert, update, ....) prend sur tes 2h.
Une fois que tu saura ca tu pourras commencer à présenter correctement ton problème. |
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Loïc JUSTINAdministrateur de base de données Inscription : novembre 2004 Messages : 234 ![]() |
Bonjour,
C'est bon, j'ai trouvé en rajoutant 5 index mon temps de traitement est passé de 2h à 35mn ![]() Voici en résumé ma démarche. 1) recherche de l'ensemble des requêtes utilisées pendant le traitement batch. Dont énormément de SELECT. Contrôle pour chaque requête si elle utilisait bien un index. Si,non création et nouveau test, pour vérifier la pertinence de celui-ci. 2)le traitement batch se faisant en deux temps. - Création d'une table temporaire (création d'un index pour accélérer le traitement de la deuxième partie) - relance de l'ensemble (très concluant) Conclusion Ced : tu avais raison, c'était bien un problème d'index. La commande "explain analyze" m'a bien aidé car je voyais tout de suite si il l'utilisait ou non
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,n'en déduits pas que c'est la cruche qui est vide. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com