José:

2016-07-11 1:49 GMT+02:00 jvenegasperu . <jvenegasp...@gmail.com>:
> tomando en cuenta lo que decia Francisco revise el tamaño de todas las
> tablas involucradas y le di a temp_buffers la suma del tamaño de tabla 1,
> tabla 2 y tabla 3 con el resultado del tamaño del join.
> y de nuevo todo se ejecuta como antes.
> son las primeras pruebas pero incluso diria que hasta esta andando mas
> rapido.

Es posible que te sobre un poco mas de RAM y acelere. De todas formas...

> tengo 2 bases de datos con algunos miles de registro en un primer caso
> necesite temp_buffers a 15 megas y en el otro temp_buffer llego a 76 mb. que
> es el tamaño que suman t1,t2 y t3 en cada caso
>
> Gracias ahora nuevamente todo esta andando bien aunque un me pregunto como
> actuaria si la BD fuera mas grande y no me alcanzara la memoria.

Ya te han sugerido la solucion rapida, compra RAM ( temp_buffers no se
usa si no se pide, con lo que si tu funcion brutal va en sesiones
contadas no pasa nada, pero si va en muchas, ojito ).

De todas maneras, sin haber visto casi nada de tu problema, esto tiene
un cierto tufillo a que estas haciendo lo que no deberias en la base
de datos ( ese tipo de queries con tablas temporales surgen mucho
cuando se prototipan cosas que deberian hacerse de ota forma mediante
SQL. En el prototipo no importa demasiado el que la solucion SQL sea
un "resource hog" porque es una prueba, pero luego no escala en
produccion. Revisa bien tu solucion.

Ya te han sugerido ademas por otro lado que pruebes a quitarte t1/t2
si no las necesitas. Eso suele ser facil, solo necesitas pasar Create
table t1 as q1, create table t2 as q2, create table t3 as join(t1, t2)
from t1, t2 por un create table t3 as join(...) from (q1) t1, (q2) t2
( o, si el query se beneficia de CTEs usalas, como siempre, mide dos
veces corta una ).

Francisco Olarte.

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a