Alvaro Herrera escribió:
"Ing . Marcos Luís Ortíz Valmaseda" escribió:
Saludos listeros. Me surge la duda si PostgreSQL en su
implementación interna, tiene alguna especie de cache interna. O sea
cuando se va a ejecutar una consulta por primera vez, si se tiene un
sistema de cache ésta se debería ejecutar lento, pero cuando se
ejecute de nuevo, debería ser por lo menos un 20 % más rápida (en
algún caso).
Cuando se establece la comunicación entre el planner/optimizer y el
executor, hay alguna forma de que se pueda guardar los caminos de
las consultas ?
Y entonces en caso de que se vaya a ejecutar de nuevo, si el
resultado ya está cacheado o guardado en un directorio tmp (una
idea) no sería más rápida la devolución de los resultados?

Postgres tiene varios caches, pero ninguno de ellos guarda resultados de
consultas.  Uno de los caches puede explicar fácilmente un 20% de
aumento de rendimiento en algunas consultas: el cache de páginas de
disco.  La primera vez las páginas deben ser leídas de disco, las veces
subsiguientes las páginas están en memoria (ya sea en cache del kernel o
en shared_buffers).

Si quieres "recordar" planes de ejecución, puedes usar PREPARE y
EXECUTE, pero no siempre es mejor que re-planear la consulta cada vez.

Entoces que sería más factible para esto:
1- ¿Desarrollar un sistema de cache interno que guarde estos resultados ?
2- ¿O controlar dicha cache con un programa externo en la capa de aplicación? (Dígase memcached, Query_Memcached)

Saludos


--
"DBAs must implement decisions based on the best fit of application, DBMS, and 
platform
...........for that reason I use BSD + PostgreSQL + 
Linux.........................."

Ing. Marcos Luís Ortíz Valmaseda
Centro de Tecnologías de Almacenamiento y Anális de Datos (CENTALAD)
Universidad de las Ciencias Informáticas

Linux User # 418229

http://www.freebsd.org
http://www.openbsd.org
http://www.postgresql-es.org
http://www.postgresql.org
http://www.planetpostgresql.org
--
TIP 8: explain analyze es tu amigo

Responder a