Re: Duracion maxima de una transaccion

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Arturo <arturomunive(at)gmail(dot)com>
Cc: Postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duracion maxima de una transaccion
Date: 2009-06-29 01:10:26
Message-ID: 20090629011026.GA1840@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Arturo escribió:

> Mi problema esta en que tengo un cuadro de ingreso de datos, en el cual se
> ingresan datos y se guardan resultados de operaciones
> el cuadro es del tipo modal (con botones ok cancel) entonces al mostrarse el
> dialogo yo inicio la transacción y al presionar ok realizo un commit, y con
> el cancel un rollback.
> El problema va por el lado de que algunos usuarios podrían dejar abierta esa
> ventana de ingresos de datos de manera prolongada (de hecho es una mala
> costumbre que tienen con el sistema actual que manejan, el cual vamos a
> remplazar)
>
> Entonces yo quiero saber cuanto tiempo debe estar abierta una transacción, y
> que problemas podría acarrearme que una transacción este abierta mucho
> tiempo.

No hay límites absolutos, pero dejar una transacción abierta durante una
cantidad arbitraria de tiempo te traerá problemas debido a que VACUUM no
va a ser capaz de limpiar adecuadamente las tablas.

Yo diría que tu enfrentamiento al problema no es ideal. Te aconsejaría
que no abrieras la transacción al abrirse el diálogo, sino sólo al
momento de presionar OK. Los cambios que haga el usuario en el diálogo
deberías mantenerlos en memoria local de la aplicación, y mandarlos
todos juntos una vez se presione OK.

(Una posible alternativa sería abrir la transacción al abrir el diálogo,
y tener un reloj en éste que le muestre al usuario "cuanto tiempo queda
para el timeout" ... si se acaba el tiempo, se cancela la transacción.
Obviamente tendría que haber otro botón para que el usuario le dijera a
la aplicación "dame más tiempo", etc. No sé si esto sea realmente
usable; me imagino que los usuarios te odiarán si implementas una idea
como esta. Por supuesto, abortar el diálogo sin haber dado ningún aviso
anterior al usuario es una forma particular de esta idea, mucho peor).

--
Alvaro Herrera http://planet.postgresql.org/
"El sudor es la mejor cura para un pensamiento enfermo" (Bardia)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jenaro Centeno Gómez 2009-06-29 09:33:37 Re: Duracion maxima de una transaccion
Previous Message Espartano 2009-06-29 00:12:13 Re: Duracion maxima de una transaccion