Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Transacciones manejo correcto (https://www.clubdelphi.com/foros/showthread.php?t=71914)

IVAND 18-01-2011 16:32:31

Transacciones manejo correcto
 
Hola a todos

Tengo un sistema echo en delphi 6 con los componentes IBX y base de datos firebird 1.5

Tengo definida las transacciones read_commited , rec_version , nowait

Es la manera correcta de configurarlas , lei por algun lado q es la manera correcta de hacerlos

El sistema estaba funcionando bien en un ambiente de de 40 equipos pero a veces se me colgaba y salia al tiempo un mensaje de deadlock , era porq tenia anteriormente configurado la opcion de wait , el mayor problema se me daba en las actualizaciones a inventarios , pero repito muy rara vez

Si me pueden guiar se los agradeceria un mundo

Nota : cuando utilizo transacciones en cache , al componente Ib le coloco cache en true y lo grabo con este funcion , seguido de un transaccion.commit;

function puedocerrarTrans(const Tables: array of TIBDataset; Action: string): Boolean;
var
I: Integer;
//Actualizar: Boolean;
begin
Result := True;
for I := 0 to high(tables) do
if Tables[i].updatesPending or Tables[i].modified then
begin
if Action = 'S' then Tables[i].ApplyUpdates
else
Tables[i].CancelUpdates;
end;
end;

Casimiro Noteví 18-01-2011 17:42:25

No he entendido qué problema tienes realmente :)

Por si acaso, ¿conoces el documento Juan José Rodríguez, todo un clásico en el tema de las transacciones?.

IVAND 18-01-2011 18:55:37

Gracias por tu tiempo

En verdad la cosa va asi , anteriormente tenia en las transacciones las acciones tal como te la indicaba pero con la opcion wait ( a veces se quedaba colgada la aplicacion y respondia despues de un par de horas con un deadlock) , ahora estoy cambiando a nowait (recien voy a lanzar el aplicativo a su ejecucion) , mi pregunta basica es basado en su experiencia , q opcion es mejor cuando trabajas con altos volumens de datos (facturas , cuentas x cobrar , cuentas x pagar etc ) , si la opcion de wait o nowait , segun esta escrito en algunos manuales la opcion nowait no espera si fuera el caso de un deadlock y muestra inmediatamente el mensaje de error ,dejando de esta manera al usuario con un mensaje directo en vez de q se quede colgado el aplicativo y me muestre un mensaje un para de horas despues

Gracias por su tiempo

nota : Si he leido ese articulo

Casimiro Noteví 18-01-2011 19:55:18

Hola IVAND, yo siempre uso 'nowait', aunque deberías revisar tus transacciones, no debe aparece nunca un deadlock.

IVAND 19-01-2011 15:41:24

Si eso es cierto , pero estoy revisando ya todo el aplicativo , he echo pruebas en par de modulos cambiando a nowait ,(Updates , Insert , delete) y todo va bien , en algun lado debe estar mal algo ..... uhhh duro trabajo que me espera


Nuevamente muchas gracias

Casimiro Noteví 19-01-2011 15:55:13

Hay que tener paciencia :)
Deberias probar desde varios puestos al mismo tiempo haciendo pruebas de trabajo normal e intentar encontrar alguna coincidencia en el momento que ocurra, no sé, por ejemplo, cuando estaba consultando las ventas de un cliente y alguien estaba vendiéndole a ese mismo cliente. (por decir algo).


La franja horaria es GMT +2. Ahora son las 04:13:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi