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 29-12-2003
fredy_boots fredy_boots is offline
Miembro
 
Registrado: oct 2003
Ubicación: mexico
Posts: 11
Poder: 0
fredy_boots Va por buen camino
Talking Que es mejor 1 transaccion por registro o 1 para varios.

Hola amigos, estoy teniendo un problema con mi base de datos de Interbase, me ha estado saliendo el error de "Dead lock", aqui me decian que es probable que sea por la cantidad de Transacciones abiertas, mi sistema por cada nuevo registro que agrega un usuario abre una transaccion y quiero modificarlo para que sea una sola transaccion para varios registros nuevos, solo que tengo una duda, al hacer esto, no requiero de mas memoria, o mas espacio en disco?, les agradeceria que me pudieran aconcejar sobre que me conviene mas, pues quiero hacer mas rapido mi programa, gracias.
__________________
vaquero
Responder Con Cita
  #2  
Antiguo 29-12-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
A mi juicio la transación tiene que abarcar un proceso determinado y no un registro, salvo que este solo constituya un proceso.

Por ejemplo, si para grabar una factura, preciso a parte de dar de alta todas las líneas que va a tener, al finalizar la misma actualizar el almacén y grabar en la ficha del cliente la fecha de la factura que será la de la última vez que compró todo este proceso lo incluyo en una transación, a parte de que pudiera haber otras anidadas, si falla alguna parte del proceso, se ejecuta el RollBack y dejamos todo como estaba.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 31-12-2003
fredy_boots fredy_boots is offline
Miembro
 
Registrado: oct 2003
Ubicación: mexico
Posts: 11
Poder: 0
fredy_boots Va por buen camino
Ya se que una transaccion tiene que ver con un proceso en si, perdon pero en mi comentario no especifique, quise decir que en mi sistema este proceso abarca lo que es una alta o una modificacion y hasta ahi, cuando el usuario da guardar en seguida se da el commit, lo que quiero saber es si me convendria dar commit o roollback hasta que el usuario lo desee, osea que pueda dar de alta varios registros y hasta "n" registros dados de alta entoces si, dar commit. No se si me explico.
__________________
vaquero
Responder Con Cita
  #4  
Antiguo 31-12-2003
fredy_boots fredy_boots is offline
Miembro
 
Registrado: oct 2003
Ubicación: mexico
Posts: 11
Poder: 0
fredy_boots Va por buen camino
Perdon, no deberia referirme tanto a "dar de alta registros", mi sistema lo unico que hace es capturar todo lo referente a una cuenta catastral, osea un "A,B,C" comun y corriente, y mi proceso para una transaccion solo abarca una alta o una modificacion; por aqui lei que el error "Internal gds software consistency check (cant continue after bugcheck)" era de interbase y posiblemente de debia a que se abrian muchas transacciones a la vez, es por eso que inicie este hilo, que hago ..... ?
__________________
vaquero
Responder Con Cita
  #5  
Antiguo 31-12-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Mira este ejemplo, que te viene con los propios componentes IB:
Código:
procedure TForm1.ApplyButtonClick(Sender: TObject);

begin
  with CustomerQuery do
  begin
  IBDatabase1.Open;
  IBTransaction1.StartTransaction;
  Table1.Insert;
  Table1.FieldByName('QUANTITY').AsInteger := StrToIn(Edit1.Text);
  Table1.Post;
  IBTransaction1.Commit;
  end;
end;
Si el proceso es dar un alta o hacer una modificación, en mi opinión se debe de finalizar la transacción, el hacer cambios en muchos registros a la vez y no concluir la transacción es lo que puede provocar que otro proceso ataque los mismos datos sin que hayamos finalizado la transacción anterior y pueda terminar produciéndose un fallo, por ejemplo un "DeadLock",

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 02-01-2004
fredy_boots fredy_boots is offline
Miembro
 
Registrado: oct 2003
Ubicación: mexico
Posts: 11
Poder: 0
fredy_boots Va por buen camino
Gracias marcos, tienes razon, solo quisiera ver si no me pudieras explicar que es exactamente un "DeadLock" y este error "Key Violation - Internal gds software consistency check (cant continue after bugcheck), este error tiene que ver con la cantidad de transaciones abiuertas? , te agradeceria mucho que me pudieras ayudar, gracias, saludos.
__________________
vaquero
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


La franja horaria es GMT +2. Ahora son las 11:24:28.


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