> 7. Ejecuto de nuevo la consulta, y efectivamente se ha eliminado el
> uso de los archivos temporales de aprox. 1.5MB, pero sigue usándose el
> de 35MB. Vamos bien !!!
> 8. Subo el work_mem = 50MB
> 9. Ejecuto la consulta MULTIPLES VECES y SIGUE utilizándose el archivo
> temporal de 35MB pero creció el tiempo en 2s !!!
> 10. Sé que los 35MB se utilizan para el order by por que si lo quito ya no se usa ese archivo temporal.
No tengo muy claro esta parte del codigo, pero se me ocurre que quizas
lo que pasa es que la estimacion es que va a usar mucha mas memoria para
hacer el sort completo, y por eso decide usar el disco desde el
principio. Fijate en el EXPLAIN ANALYZE si la estimacion total de
tuplas esta muy desviada de la cantidad verdadera de tuplas que se
generan en ese sort. Quizas intenta poner un work_mem mucho mas grande
(100 o 500 MB) a ver si en algun momento se decide a no usar el disco.
> 11. Vuelvo a work_mem = 5MB y vuelvo a optener los valores de 2s por debajo.
Esta parte no me queda nada clara. Supongo que hay una diferencia en el
plan pero no mostraste los planes.
--
Alvaro Herrera
http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo
No comments:
Post a Comment