Re: funcionamiento de temp_buffer

From: Francisco Olarte <folarte(at)peoplecall(dot)com>
To: "jvenegasperu (dot)" <jvenegasperu(at)gmail(dot)com>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: funcionamiento de temp_buffer
Date: 2016-07-11 09:29:41
Message-ID: CA+bJJbzQBTB+kYqROEwvr-Oj9dVwobcW2+y3WJo5bKaX3jLaWw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

José:

2016-07-11 1:49 GMT+02:00 jvenegasperu . <jvenegasperu(at)gmail(dot)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(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2016-07-12 02:23:37 Re: Usando WAL en memoria junto con streaming replication
Previous Message Alvaro Herrera 2016-07-11 01:07:42 Re: funcionamiento de temp_buffer