From: | Mario Soto Cordones - Venezuela <msotocl(at)gmail(dot)com> |
---|---|
To: | Mario Soto Cordones - Venezuela <msotocl(at)gmail(dot)com>, Lista postgreslq Postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: query asincronico y SPI |
Date: | 2005-09-23 21:24:45 |
Message-ID: | e9b17cde050923142432826ceb@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
He leido la documentacion oficial de LISTEN , pero creo que es muy
ambigua, realmente no entiendo como implementar un LISTE, alguien lo
ha hecho antes o alguien sabe de alguien que haya escrito algo
respecto este tema ya que la documentacion oficial tiene solo una
pagina y 2 para el NOTIFY
Gracias por la ayuda
El 23/09/05, Alvaro Herrera<alvherre(at)alvh(dot)no-ip(dot)org> escribió:
> On Fri, Sep 23, 2005 at 02:03:58PM -0400, Mario Soto Cordones - Venezuela wrote:
>
> > Tengo una vista materializada que me actualiza una tabla de
> > referencias cruzadas, esto me funciona muy bien y me aliviana muchos
> > procesos de busquedas de registros en una tabla de mas de 4 millones
> > de registros, el problema actual que tengo es que al gatillar el query
> > que me actualiza la vista materializada despues de la insercion de un
> > registro, la aplicacion cliente queda tomada hasta que el servidor
> > termina de actualizar la vista,. Por eso busque informacion y encontre
> > que con libpq puedo tener querys asincronicos, pero libpq no me sirve
> > ya que mi aplizacion en windows utiliza psqlodbc, es por eso que
> > disene una funcion en lenguaje C con SPI y al gatillar el query pero a
> > la funcion que se llama actualiza.so, es resultado es el mismo.
>
> Entiendo. No, no puedes hacerlo con SPI, ni de ninguna otra forma en
> realidad, en esencia porque el "backend" no es multithread, y por lo
> tanto no puede quedar procesando la peticion de actualizacion y ademas
> seguir con el resto del procesamiento para el cliente.
>
> No desesperes eso si -- hay un mecanismo que me parece que es casi
> perfecto para lo que quieres; se trata de LISTEN/NOTIFY. La idea seria
> que el proceso que haga el trabajo de regeneracion de la vista
> materializada sea independiente de los que atienden a los clientes.
> Esto proceso debe hacer un LISTEN, y los procesos que modifiquen las
> tablas involucradas deben invocar a NOTIFY en un trigger. Entonces
> cuando se haga una modificacion, la notificacion despertara al proceso
> que reconstruye la vista, y este trabajara fuera de linea.
>
> Espero haberme explicado. Ojala te sirva este mecanismo; realmente es
> muy sencillo.
>
> --
> Alvaro Herrera http://www.advogato.org/person/alvherre
> www.google.com: interfaz de línea de comando para la web.
>
--
cordialmente,
Ing. Mario Soto Cordones
From | Date | Subject | |
---|---|---|---|
Next Message | Martín Marqués | 2005-09-23 21:41:21 | Re: Ayuda con la conexion - Urgente |
Previous Message | Martín Marqués | 2005-09-23 21:16:23 | Re: Ayuda con la conexion - Urgente |