Vous n'êtes pas identifié(e).

#1 13/09/2013 13:38:51

mortimer.pw
Membre

WORK_MEM et fichiers temporaires

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

#2 13/09/2013 13:49:18

rjuju
Administrateur

Re : WORK_MEM et fichiers temporaires

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.

Hors ligne

#3 13/09/2013 13:59:17

mortimer.pw
Membre

Re : WORK_MEM et fichiers temporaires

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

#4 18/09/2013 08:03:37

mortimer.pw
Membre

Re : WORK_MEM et fichiers temporaires

Bonjour Julien,

J'ai oublié de vous demander : le bug est-il corrigé en 9.3 ?

Merci encore.

Hors ligne

#5 18/09/2013 09:02:54

gleu
Administrateur

Re : WORK_MEM et fichiers temporaires

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

Pied de page des forums