Tuning Postgresql - Tips

Tuning Postgresql - Tips - SQL/NoSQL - Programmation

Marsh Posté le 05-12-2003 à 10:19:45    

Yop,
 
On est en train de tuner une base postgresql pour améliorer les perfs (genre une query qui tourne en 120 sec en renvoyant 4 résultats, je fais un index sur une table pouf 0.1 sec pour la meme query :D)
 
J'aimerai avoir l'avis des experts pour déterminer quels outils on pourrait utiliser pour monitorer la base et déterminer les indexs à créer.
 
Postgres 7.3.4 avec un JBoss derrière (J2EE)
 
On va déjà utiliser le vacuum toute les nuits mais bon je suppose qu'il y a moyen de faire mieux ;)
 
:jap:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-12-2003 à 10:19:45   

Reply

Marsh Posté le 05-12-2003 à 10:21:22    

si tu peux utiliser la 7.4, ils ont implémenté un auto vacuum qui a l'air pas mal sur papier (je ne peux malheureusement pas la tester sur OSX 10.2 :( )


Message édité par gizmo le 05-12-2003 à 10:21:46
Reply

Marsh Posté le 05-12-2003 à 10:30:14    

gizmo a écrit :

si tu peux utiliser la 7.4, ils ont implémenté un auto vacuum qui a l'air pas mal sur papier (je ne peux malheureusement pas la tester sur OSX 10.2 :( )


 
ce n'est pas prévu pour l'instant et je préfère rester en 7.3 pour ne pas introduire des problèmes potentiels en plus. A la base c'est plutot un outil qui scanne les requetes les plus fréquentes et sur base de ca on peut analyser le résultat nous meme.  
 
Je n'ai pas besoin d'un outil qui me sors les indexs à créer ou qui les crée pour moi ;)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-12-2003 à 10:42:59    

Connais pas d'outils pour faire çà.
 
Dans mon appli PHP, l'execution des requêtes (Postgres et Oracle) est confiée à une classe.
La méthode runSql() calcule le temps d'exécution et log le tout dans une table mouchard.
 
Il suffit ensuite de regarder dans le mouchard les requêtes qui rament :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-12-2003 à 11:11:10    

sinon, tu peux toujours utiliser une fichier de log pour avoir toutes les commandes exécutées et faire des tris dessus.

Reply

Marsh Posté le 05-12-2003 à 11:12:00    

gizmo a écrit :

sinon, tu peux toujours utiliser une fichier de log pour avoir toutes les commandes exécutées et faire des tris dessus.


 
oui c'est ce que je m'appretai à faire ;)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-12-2003 à 13:40:27    

Mara's dad a écrit :

Connais pas d'outils pour faire çà.
 
Dans mon appli PHP, l'execution des requêtes (Postgres et Oracle) est confiée à une classe.
La méthode runSql() calcule le temps d'exécution et log le tout dans une table mouchard.
 
Il suffit ensuite de regarder dans le mouchard les requêtes qui rament :D


il n'y aura pas grand chose à modifier dans ma classe pour faire ça :)
 
sinon mon approche est de déterminer quelles sont les requêtes les plus souvent utilisées, de voir si je peux formuler les requêtes autrement pour améliorer les perfs, sinon ajouter bêtement une clé comme dit DarkLord en exemple.
 
Mais bon, une clé en plus peut prendre plus ou moins de place en fonction du champ :/ (je dis ça parce que j'ai dû me résoudre à poser une clé sur un champ varchar dans une base à moi, 1.2 millions de rows, parce  qu'il est quasi toujours dans la condition de recherche, mais le gain est là: 4x plus rapide)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 05-12-2003 à 14:00:17    

est ce dangereux d'ajouter trop d'indexes?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-12-2003 à 14:15:58    

bah c'est comme pour tout, trop de ... tue le ... [:spamafote]
 
D'une part, comme l'a signalé Drasche, ca peut prendre une place supplémentaire considérable, de l'autre, si tu mets des indexes dans tous les sens, le SGDB ne va plus savoir faire des organisation efficaces ou déterminer lequel prendre pour faire une requète.

Reply

Marsh Posté le 05-12-2003 à 14:20:24    

le terme dangereux ne me paraît pas approprié, disons plutôt "lourd", pour rejoindre les arguments de Gizmo ;)
 
Tu peux sans aucun problème avoir des indexes qui prennent plus de place que la table elle-même (ok c'est bourrin :D). Reste à voir si le SGBD va apprécier, et si c'est pertinent. Perso je l'ai fait (par souci de recherche et d'expérimentation hein, par pour de la prod ;)) sur une table qui n'existe que pour la consultation, on n'ajoute jamais rien dedans (disons que c'est un dictionnaire de données qui vient du client et qui m'est très utile quand je cherche de l'info business)


Message édité par drasche le 05-12-2003 à 14:20:54

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed