Vous n'êtes pas identifié(e).
Pages : 1
Re-bonjour...
J'ai un prédicat qui consomme énormément car il attaque un index bidon en prod => OK
Cet ordre effectue un SELECT avec un ORDER BY toto DESC LIMIT 1 => OK
J'ai trouvé comment l'optimiser avec le rajout d'un index mais j'ai une question à vous poser :
Est-il possible d'agrandir la zone de tri de Postgrès ? Et quelle nom porte t'elle ?
Quelle taille minimale doit-on lui donner ?
Mes question sont un peu vagues mais j'aimerais avoir l'équivalent des pools de tri d'oracle ...
Merci pour vos réponses...
Hors ligne
Il n'y a pas de pool, la mémoire est par processus. L'autre différence, c'est qu'elle est allouée et désallouée à la volée suivant les besoins des requêtes. C'est le paramètre work_mem dont il s'agit. C'est l'espace maximum de mémoire qu'UNE opération de tri ou de hachage peut prendre. Donc s'il y a plusieurs tris dans une requête, work_mem peut être alloué plusieurs fois. Mais il sera désalloué dès qu'il ne sera plus nécessaire.
De la même façon, les fichiers temporaires (quand la mémoire ne suffit plus) sont dynamiques, et créés et détruits à la volée.
Marc.
Hors ligne
Merci Marc pour votre réponse...
1°) Chez nous, la work_mem est à 500 méga ... cela veut-il dire que chaque process prend au minimum, 500 méga de mémoire à lui tout seul ?
2°) Comment faire un select non bloquant, qui lit donc les 'dirt' données ?
Hors ligne
1) Non, la work_mem n'est allouée qu'au besoin, et libéré juste après. Mais 500Mo est gigantesque, à part pour un infocentre. On met plutôt entre 1 et 10Mo pour l'OLTP.
2) Je ne suis pas sûr de comprendre la question. Je préférerais que vous précisiez.
Marc.
Hors ligne
Imaginons un traitement qui effectue des inserts sur la tableA => OK
Imaginons qu'au même moment j'envoie un 'select * from tableA' => OK
Qu'est-ce qu'il se passe ?
Hors ligne
Le SELECT n'est pas bloqué par l'INSERT et inversement.
Guillaume.
Hors ligne
Ok mais si c'est un select * from tableA avec un ORDER BY toto DESC LIMIT OFFSET 1cela bloque t'il ?
Hors ligne
Non, quelque soit le SELECT.
Guillaume.
Hors ligne
Imaginons plusieurs 'Select * ... ORDER BY toto DESC LIMIT 1' simultanés => OK
Si tous les select prennent 500 méga de mémoire, il se peut que le serveur soit saturé très vite non ?
Hors ligne
Oui, c'est bien pour ça que votre paramètre est bien trop gros, comme écrit dès le début
Par contre, il ne va pas allouer 500Mo si il y a 10Mo à trier.
Marc.
Hors ligne
Merci pour vos réponses...
Hors ligne
Pages : 1