Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 26/10/2011 19:31:23
- palex
- Membre
Probleme effective_cache_size
Bonsoir a tous!
J aurais voulu avoir quelques explications sur le parametre effective_cache_size et sont fonctionnement. Car en local lorsque ce parametre est desactive j ai des temps de reponse tres correct. J ai essayer comme preconise dans le fichier de conf postgres de le positionner a 1/2 de ma Ram et au 3/4 pour le mettre au taquet comme recommande sur la doc postgresql. Mais des que je l active, une requete qui prend 300ms en temps normal dure plus de 10 minutes! Voir plus...
Pourtant ce parametre se trouve dans la section querry tunning du fichier, je pensais avoir de meilleur perf avec...serais t il couple avec d autre parametre du fichier de conf a ne pas negliger?
Merci beaucoup
Hors ligne
#2 26/10/2011 19:42:57
- rjuju
- Administrateur
Re : Probleme effective_cache_size
Le paramètre effective_cache_size donne a postgresql un moyen de déterminer si une donnée qui n est pas dans le cache postgres a des chances d'être dans le cache disque du système d'exploitation.
Ainsi, une grosse valeur aura tendance a diminuer l'utilisation des index, l'accès disque étant rendu plus rapide.
Vous devriez voir un changement de plan d'exécution dans le explain qui vous permettra de voir où se trouve le problème.
De plus, après un redémarrage du serveur il est probable que les données ne soient pas dans le cache système, le gain en performance ne sera alors visible qu'une fois les données remontées dans le cache système.
Une augmentation de plus de 10 minutes est à première vue déraisonnable. Si aucun verrou ne bloque l'accès cela peut être le signe de statistiques non à jour conduisant à de très mauvais plan d'exécution. Bref, il faut chercher dans plusieurs directions.
Pour les autres paramètres de configuration, le plus important est sans doute le shared_buffers qui dimensionne le cache postgresql et contribue le plus au gain de performance. Si vous êtes sous windows, il est par contre déconseillé de le passer à plus de 512MB.
Dernière modification par rjuju (26/10/2011 19:50:16)
Julien.
https://rjuju.github.io/
Hors ligne
#3 26/10/2011 19:59:17
- gleu
- Administrateur
Re : Probleme effective_cache_size
ce parametre est desactive
Aucun paramètre n'est désactivé. Il a sa valeur par défaut quand il est en commentaire.
Ainsi, une grosse valeur aura tendance a diminuer l'utilisation des index, l'accès disque étant rendu plus rapide.
Non, c'est le contraire. Avec une grosse valeur, l'index a plus de chance d'être en mémoire avec la table... donc plus de chances d'utiliser un index.
Guillaume.
Hors ligne
#4 26/10/2011 20:03:35
- palex
- Membre
Re : Probleme effective_cache_size
Je suis sur linux mais ce que je comprends pas c est que la requete qui est longue s execute sur un serveur qui tourne depuis plusieurs heures, du coup le cache est deja rempli...il devrai alle vite...la je coupe le serveur en desactivant ce parametre donc sans le cache et ma requete s execute en moins de 500ms...ya un truc que je saisie pas mais je regarderais le plan d execution et les vaccums pour voir. Merci pour ces informations
Hors ligne
#5 26/10/2011 20:04:53
- palex
- Membre
Re : Probleme effective_cache_size
Oui ok pour la valeur par defaut je me suis mal exprime mais je me douttai qu il y avai une valeur par defaut pardon.
Hors ligne
#6 26/10/2011 20:19:51
- rjuju
- Administrateur
Re : Probleme effective_cache_size
Ainsi, une grosse valeur aura tendance a diminuer l'utilisation des index, l'accès disque étant rendu plus rapide.
Non, c'est le contraire. Avec une grosse valeur, l'index a plus de chance d'être en mémoire avec la table... donc plus de chances d'utiliser un index.
Effectivement, encore un truc que j'avais compris de travers ^^
Julien.
https://rjuju.github.io/
Hors ligne
#7 26/10/2011 21:31:45
- gleu
- Administrateur
Re : Probleme effective_cache_size
rjuju : pas de soucis
palex : il nous faudrait les plans d'exécution pour pouvoir en dire plus (EXPLAIN ANALYZE la_requete).
Guillaume.
Hors ligne
#8 27/10/2011 15:09:13
- palex
- Membre
Re : Probleme effective_cache_size
bonjour!
je viens de jouer l explain analyze sur ma machine et sur une machine de qualif
voici les liens du resultat :
ma machine : http://explain.depesz.com/s/R7m
qualif : http://explain.depesz.com/s/EPD
merci de m'expliquer ce qui n'irai pas entre les 2 sachant que les bases contienne les memes index etc.. les seules chose qui changent sont les conf postgres au niveau du effective_cache_size, shared_buffer...
que préconiseriez vous comme configuration postgres sur cette machine :
ipcs -l -m
------ Limites de la mémoire partagé --------
max number of segments = 4096
max seg size (kbytes) = 67108864
max total shared memory (kbytes) = 17179869184
taille minimum de segments (octets) = 1
free
total used free shared buffers cached
Mem: 2059580 2049004 10576 0 4572 1745484
-/+ buffers/cache: 298948 1760632
Swap: 2097144 14308 2082836
merci pour votre aide.
Hors ligne
#9 27/10/2011 15:35:25
- palex
- Membre
Re : Probleme effective_cache_size
j'ai oublié de preciser je suis en 8.4.9-0ubuntu0.10.10 (32bits) et sur la qualif en 8.4.7 on x86_64-unknown (64bits)
Dernière modification par palex (27/10/2011 16:43:11)
Hors ligne
#10 27/10/2011 16:56:11
- cedric
- Membre
Re : Probleme effective_cache_size
Il y a eu plusieurs améliorations en 8.4.8 et 8.4.9 sur la gestion des joins/anti-join, bitmap, etc...
1/ Pour comparez vous devez utiliser la meme version en dev et en prod. (une mise à jour de la prod est souhaitable dans tous les cas)
2/ Il est possible que la qualité des échantillons statistiques diverge entre le dev et la prod, et que le plan soit lamentable en prod en raison de ce point.
2/ est facile à vérifier (procédez a un analyze des tables mise en oeuvre), et 1/ me semble la vraie cause de votre différence de performance entre les deux (car il implique la construction d'une mauvaise optimisation)
Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation
Hors ligne
#11 27/10/2011 17:51:48
- palex
- Membre
Re : Probleme effective_cache_size
ok je vais voir dans quel mesure il est possible de passer en 8.4.9 voir meme 9 et supérieur! et je vais égalemetn télécharger une version 8.4.7 en local pour faire quelques test afin d'etre dans quasiment les memes conditions
merci pour votre aide
Hors ligne
#12 28/10/2011 12:20:09
- palex
- Membre
Re : Probleme effective_cache_size
bonjour
je viens de lancer un serveur 8.4.7 en local pour etre iso prod et j'ai executé la requete et elle utilise bien un bitmap index scan meme avec cette version donc la prod devrait faire la meme, j'ai fait des vaccum annalyze sur les bases pour que les index soient à jour mais rien ne change. donc je comprend pas.
Hors ligne
#13 28/10/2011 14:07:09
- palex
- Membre
Re : Probleme effective_cache_size
existe t il un moyen de mettre en debug certaines chose afin de voir pourquoi il choisi tel ou tel algorithme ? quitte a ce que j'ajoute des write dans le code source juste pour moi?
merci
Hors ligne
#14 29/10/2011 08:18:00
- gleu
- Administrateur
Re : Probleme effective_cache_size
Donc si je comprends bien, avec un 8.4.7 sur les deux serveurs, et après avoir fait un VACUUM ANALYZE (seul le ANALYZE est intéressant), vous avez les deux plans indiqués plus haut et une grosse différence en terme de temps d'exécution ?
Vous êtes sûr que les deux bases sont identiques ? pas d'index supplémentaire par exemple ? vous pouvez utiliser check_postgres.pl avec l'action same_schema pour vous en assurer.
La configuration est la même ? notamment le paramètre stats_default_target ?
Que se passe-t-il si vous désactivez le paramètre enable_indexscan sur le serveur lent ?
Guillaume.
Hors ligne
#15 29/10/2011 08:20:42
- gleu
- Administrateur
Re : Probleme effective_cache_size
Et pour répondre spécifiquement à vos questions, mettre en debug va vous donner bien trop d'infos pour que vos logs soient réellement déchiffrables. Modifier le code source pour ça ne me paraît bien pas la bonne approche. Commencez déjà par tester ce qu'il se passe avec le enable_indexscan désactivé. Ensuite (ou avant, peu importe), comparez les statistiques correspondant aux tables impliquées dans cette requête. Oh, et souvent, le plus simple pour améliorer les performances consiste à revoir la requête.
Guillaume.
Hors ligne
#16 30/10/2011 14:33:10
- palex
- Membre
Re : Probleme effective_cache_size
Ok je verrais tout cela lundi. La requete a ete revu aussi et a permis de gagner un peu de temps mais j ai un gros souci c est que j aimerais bien comprendre pourquoi la meme requete prend un temps completemet different alors que mon pc est cense etre moins rapide que la prod en plus, je verifierai les schemas au cas ou mais il s agissait d un dump puis restore.
Je vous tiens au courant des que j ai pu tester tout cela.
Merci
Hors ligne
#17 02/11/2011 12:55:49
- cedric
- Membre
Re : Probleme effective_cache_size
Ok je verrais tout cela lundi. La requete a ete revu aussi et a permis de gagner un peu de temps mais j ai un gros souci c est que j aimerais bien comprendre pourquoi la meme requete prend un temps completemet different alors que mon pc est cense etre moins rapide que la prod en plus, je verifierai les schemas au cas ou mais il s agissait d un dump puis restore.
Je vous tiens au courant des que j ai pu tester tout cela.
Merci
un dump& restore ne reproduit pas les éventuels espaces morts que vous avez en prod. Cela change donc les estimations d'occupations de lignes vivantes par page.
Avez-vous des volumes similaires? (comparaison rapide à la mano : dans psql, \dt+ et \di+ pour connaitre les tables avec leur volumes disque)
Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation
Hors ligne
Pages : 1