Re: [Pgsql-ayuda] Monitorear un query

From: Antonio Castro <acastro(at)ciberdroide(dot)com>
To: Gatosoft <gatosoft(at)yahoo(dot)com>
Cc: pgsql ayuda listapostgres <pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx>
Subject: Re: [Pgsql-ayuda] Monitorear un query
Date: 2002-10-10 16:19:00
Message-ID: Pine.LNX.4.21.0210101803120.842-100000@midas.ciberdroide.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Thu, 10 Oct 2002, Gatosoft wrote:

> Hola Foro...!!!
>
> Estoy haciendo una aplicacion cliente en Delphi, que
> toma los datos de un servidor con Postgres 7.1.
> Desde mi aplicacion, le envio al servidor una peticion
> como esta:
>
> Select CalcularNomina(...Parametros...)
>
> Utilizando los componentes ZEOS.
>
> El caso es que este procedimiento actualmente se
> demora entre 2 y 3 minutos, y en el futuro, tal vez se
> demore mas.
> me gustaria saber como puedo saber que està pasando
> mientras este se ejecuta, algo asi como:
> 10% calculado....
>
> cuando lo ejecuto desde la consola, puedo ver esto
> porque utilizo un
>
> raise notice ''Empleados procesados %'', tantos...
>
> Se me ocurrio entonces (algo no muy elegante), guardar
> cada vez que procese un empleado, un registro en una
> tabla de Notificaciones que tengo:
>
> Perform set_notificacion(''NumPersonas'', valor);
>
> y en un proceso paralelo, desde el cliente, voy
> consultando este registro cada cierto tiempo...(!!);
> pero sucede que esto solo se hace efectivo cuando
> termina el procedimiento y el motor hace un COMMIT.
>
> Me gustaria saber que se puede hacer, o ustedes como
> trabajan este tipo de problemas...
> ------------------------------------------------
>
> Otra inquietud... que nació de el anterior problema
> es:
> puedo hacer algo como:
>
> for RegistroEmpleado into
> {....Query....}
> Loop
> start transaction
>
> Aqui hago muchas operaciones
> para cada empleado.
>
> commit;
> end Loop;
>
>
> Estuve leyendo la documentacion y se que no existe el
> start transaction--Commit, sino: BEGIN; COMMIT;
>
> Pero intenté utilizarlo y .... (bueno, ustedes son los
> expertos, ya se imaginaran que pasó, o que no pasó).
>
> Perdonen mi ignorancia, pero soy bastante nuevo en
> Postgres...

Y si haces el tratamiento dividiendolo en varios tramos por fechas por
ejemplo ?

Igual las tablas intermedias del gestor resultan mucho más pequeñas
y el tiempo global se hace menor.

Lo digo porque una query que combine varias tablas con un montón de
registros cada una suele resultar muy pesado.

Lo que te comento sería un particionado por número de registros pero
puedes particionar por tablas. Puedes hacer primero un join entre
unas pocas tablas que genere una tabla temporal y sobre este resultado
le puedes aplicar alguna otra join con la(s) otra(s) tabla(s) restante(s).

Vigila que la cantidad de swap sea suficiente. Si lo ves necesario
puedes aumentar la swap temporalmente y liberarla al final de la query
aunque sea usando swap sobre fichero. Por ejemplo:

dd if=/dev/zero of=/tmp/swap bs=1024 count=500000
chmod 600 /tmp/swap
mkswap /tmp/swap
swapon /tmp/swap

Te hablo de remedios sencillos porque la optimizacion de una consulta
o la optimización del sistema en general o del gestor de Postgres son
temas que dan para mucho y generalmente requieren saber como funciona
cada cosa lo cual no es facil de resumir en un par de consejos.

Un saludo

Antonio Castro

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/\ /\ Ciberdroide Informática (Tienda de Linux)
\\W// <<< http://www.ciberdroide.com >>>
_|0 0|_
+-oOOO--(___o___)--OOOo----------------------------------------------------+
| . . . . U U . . . . Antonio Castro Snurmacher acastro(at)ciberdroide(dot)com |
| . . . . . . . . . . |
+()()()----------()()()----------------------------------------------------+
| *** 1.700 sitios clasificados por temas sobre Linux en ***Donde_Linux*** |
| <<< http://www.ciberdroide.com/misc/donde/dondelinux.html >>> |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime N. Charles Treviño 2002-10-10 18:02:12 Re: [Pgsql-ayuda] Monitorear un query
Previous Message Gatosoft 2002-10-10 13:39:32 [Pgsql-ayuda] Monitorear un query