Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je travaille sur une base 9.2.4 sous Cent-OS 5.9.
J'ai une grosse requête qui doit me retourner un peu moins de 1.1 millions d'enregistrement.
Cette requête génére un fichier temporaire de 63Mo.
J'ai essayé de faire, en début de session (psql), "set work_mem='64Mo';" avant de lancer la requête mais pas de changement.
Ce paramètre ne doit-il pas allouer de la mémoire pour l'exécution de ma requête et éviter l'écriture de fichier temporaire sur disque ?
Pouvez-vous éclairer ma lanterne ?
Merci.
Dernière modification par mortimer.pw (13/09/2013 13:40:04)
Hors ligne
Bonjour,
c'est effectivement le but de ce paramètre. Un bug d'estimation de la taille nécessaire était cependant présent jusqu'en 9.2, ce qui fait qu'en 9.2, il faut avoir une estimation beaucoup plus large de cette espace. Si vous le passez à 128 MB (la plus grosse erreur possible étant de 50 %), vous êtes certains que les 63 Mo pourront être alloués.
Il faut également utiliser l'unité 'MB' et non 'MO' pour spécifier la taille du paramètre.
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour Julien,
Oui, j'ai bien mis MB.
Avec 128, toujours pareil.
Avec 256 c'est ok.
Merci pour votre aide.
Dernière modification par mortimer.pw (13/09/2013 14:36:37)
Hors ligne
Bonjour Julien,
J'ai oublié de vous demander : le bug est-il corrigé en 9.3 ?
Merci encore.
Hors ligne
Le bug d'estimation est corrigé. Il n'empêche que la taille d'un tri sur disque est toujours plus grosse que la taille d'un tri en mémoire, l'algorithme utilisé étant différent.
Guillaume.
Hors ligne
Pages : 1