![]() |
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; |
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?. |
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 |
Hola IVAND, yo siempre uso 'nowait', aunque deberías revisar tus transacciones, no debe aparece nunca un deadlock.
|
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 |
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