Skip site navigation (1) Skip section navigation (2)

Re: query asincronico y SPI

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Mario Soto Cordones - Venezuela <msotocl(at)gmail(dot)com>
Cc: Lista postgreslq Postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: query asincronico y SPI
Date: 2005-09-23 18:40:08
Message-ID: 20050923184008.GB8580@surnet.cl (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
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.

In response to

Responses

pgsql-es-ayuda by date

Next:From: Horacio MirandaDate: 2005-09-23 18:57:36
Subject: Re: Otra ves con los arrays
Previous:From: Mario Soto Cordones - VenezuelaDate: 2005-09-23 18:03:58
Subject: Re: query asincronico y SPI

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group