Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-01-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Unhappy Transacciones, que locura!

Buenos dias,

Realmente el titulo se aplica cuando no se entiende nada al respecto, he leido varios post, inclusive documentos y explicaciones al respecto, pero me he sentido frutstrado, porque no he podido resolver la situacion, quisiera por favor una orientacion mas concreta. (pido disculpas por no entender nada despues de todo). El escenariko es el siguiente: Aplicacion trata sobre facturacion de consumo de agua, esta montado en un server linux con firebird 1.5 y lo acceso desde delphi con IBX. EL problema surge que, existe un cajero realizando la facturacion sobre una tabla (donde se prensentan las facturas) pero cuando se, pero cuando se consulta un estado de cuenta sobre el mismo suscriptor pero en otra maquina, siempre me aparece el dead lock, entonces hay que salir de la facturacion para poder sacar el estado de cuenta, o viceversa salir del estado de cuenta para poder facturar. el setup de la transaction es read_commit, rec_verson, nowait, y tengo este componente para el form de facturacion y otro form para el estado de cuenta con su respectiva transaction. La pregunta es como deberia configurar las transacciones para cada proceso. He realizado varias pruebas de distintas maneras pero siempre me genera el abrazo de la muerte. Gracias por su valioso tiempo.
Responder Con Cita
  #2  
Antiguo 30-01-2010
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
¿En la generación de dicho estado de cuenta, de pronto estas tratando de escribir en el mismo registro que esta abierto por el cjaero, en ese momento?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 30-01-2010 a las 17:20:22. Razón: corregir palabra "de pronto"
Responder Con Cita
  #3  
Antiguo 30-01-2010
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Eso es correcto hice una revision minuciosa y la rutina de generar el estado de cuenta, me estaba ejecuntando un update de la misma tabla, efectivamente dicho update no era necesario de por si, entonces procedi a eliminarlo y ha funcionado muy bien. Gracias por tu tiempo
Responder Con Cita
  #4  
Antiguo 30-01-2010
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por sierraja Ver Mensaje
Eso es correcto hice una revision minuciosa y la rutina de generar el estado de cuenta, me estaba ejecuntando un update de la misma tabla, efectivamente dicho update no era necesario de por si, entonces procedi a eliminarlo y ha funcionado muy bien. Gracias por tu tiempo
Que bien , eso me alegra.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 31-01-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 915
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Como saber tanto ..........jhonny

Realizando una simple pregunta se soluciona todo...Fantastico.

Saludos
Responder Con Cita
  #6  
Antiguo 04-02-2010
andresenlared andresenlared is offline
Miembro
 
Registrado: oct 2003
Posts: 153
Poder: 21
andresenlared Va por buen camino
saludos...

respecto a las locuras de las tranascciones como se puede evitar el abrazo mortal cuando dos aplicaciones estan accediendo al mismo tiempo al mismo registro...por ejemplo la aplicacion A esta actualizando el registro 5 de la tabla T1 y la aplicacion B esta realizando una actualizacion en otro campo del mismo registro en la tabla T1....son situaciones que efectivamente se pueden presentar cuando se trabajan diferentes aplicaciones sobre una misma base de datos...pero cual seria la mejor forma de controlar estas situaciones.?
__________________
Popayán-Colombia
Responder Con Cita
  #7  
Antiguo 04-02-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Te aconsejo este libro, es un pdf, haz una búsqueda por "deadlock", creo que te resultará útil.
Responder Con Cita
  #8  
Antiguo 08-02-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Cita:
Empezado por andresenlared Ver Mensaje
saludos...

respecto a las locuras de las tranascciones como se puede evitar el abrazo mortal cuando dos aplicaciones estan accediendo al mismo tiempo al mismo registro...por ejemplo la aplicacion A esta actualizando el registro 5 de la tabla T1 y la aplicacion B esta realizando una actualizacion en otro campo del mismo registro en la tabla T1....son situaciones que efectivamente se pueden presentar cuando se trabajan diferentes aplicaciones sobre una misma base de datos...pero cual seria la mejor forma de controlar estas situaciones.?
Pienso que aquí lo mejor es prevenir. Es decir, si dos o más usuarios van a modificar un registro lo mejor es que el primero que interviene lo establezca como propio y el resto lo único que puedan entrar es en modo lectura, de esta manera, evitamos que dos usuarios modifiquen una información sobre un registro que en principio no debería ocurrir según qué casos.

Respecto a tu especificación concreta, pienso que deberías revisar la Forma Normal de tu base y si se relaciona correctamente con la lógica de los procesos. Un usuario no debería tener el privilegio de modificar una parte de un registro y otro otra parte. Divide esa tabla en dos que se relacionen, es posible que no hayas establecido bien las entidades.

Si no es así, establece un sistema de prioridades y crítico, quiero decir, que existe código crítico que debe resolverse en poco tiempo. Puedes utilizar en este caso un update directo sobre la base y su consecuente transacción. En teoría como ambos usuarios modifican diferentes partes del registro el cual no se puede dividir en dos o más tablas, dará lo mismo cuando actualicen ya que los datos que no modifiquen no deberían verlos.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Locura Con Interbase perillan Conexión con bases de datos 8 29-06-2005 19:32:15
cual es la locura mas grande Ambar Humor 8 10-05-2005 22:51:57
Sana locura santana Humor 16 17-06-2004 10:42:53
Error aleatorio, verdadera locura buitrago Varios 0 14-03-2004 07:29:50
dato double, una locura Manuel Varios 4 17-11-2003 16:52:25


La franja horaria es GMT +2. Ahora son las 00:44:51.


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