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 10-06-2014
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 21
erickperez6 Va por buen camino
ayuda en wait y nowait en transacciones

Saludos,

En pocas ocasiones los usuarios de mi aplicación obtienen un deadlock en la actualización de algunos registros que estoy consiente pueden coincidir en ciertos momentos, el tema es que me gustaría en vez de producirse el deadlock, la aplicacion espere que la transaccion que tiene "tomado" el registro termine (commit) para que la segunda proceda. La verdad es que el usuario de la transaccion que "esperara" a que la primera termine, casi no notara la espera porque mi aplicación realiza los commit casi inmediatamente cuando se actualiza algún registro. Los parámetros de mi transacción son:

write
nowait
concurrency

Probé cambiar el nowait por wait, pero todavía obtengo los deadlock, no se si para lograr lo que deseo debo de realizar otros cambios adicionales.
Responder Con Cita
  #2  
Antiguo 10-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La verdad es que no debe suceder nunca un deadlock.
Responder Con Cita
  #3  
Antiguo 19-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
hola otra vez,

Estaba viendo este tema de las transacciones pero no me aclaro.

Uso componentes zeos y firebird.
en la conexion tengo seleccionada transacisolationleve como tireadcommitted.

A la hora de guardar un registro lo hago como
Código Delphi [-]
zquery.post;
zquery.applyupdates;
zquery.commitupdates;
zquery.refresh;

Funcionar funciona bien.

El programa tiene un apartado de venta que se usa en una computadora para ventas y por el otro lado, esta el administrador que va dando de alta los productos, compras etc.

Leyendo sobre el tema y sobre un comentario de Casimiro
Cita:
El otro día un usuario (de clubdelphi) decía que tenía una BD de 10 gigas y que era algo lenta, le aconsejé hacer un backup/restore y volvió a la normalidad, además de ocupar menos de 400 megas, parece que nunca jamás había hecho "limpieza" de la BD
Te aconsejo que leas "EL" documento por excelencia sobre transacciones.
Me he liado mas, porque zeos no tiene un componete de transacciones o si?.
estoy leyendo todo el post Transacciones en Zeos. Conviene una por Conexión ?, así como otros, pero si esta dificil, nose si lo que puse como hago las cosas es correcto o no, porque no uso transacciones, eso creo, y la finalidad es no cerrar la conexion a otros usuarios mientras el administrador da de alta o modifica para evitar el deadlock.

No se si me lo parece a mi, por lo que leo, que es un tema controvertido. El ejemplo del banco es muy bueno, se cierra automaticamente la transaccion para evitar conflictos.

En mi caso, y perdonad que me repita, si se usan dos computadoras, y en una se estan efectuando ventas de un minisuper, si el administrador por el otro lado esta modificando un registro que afecta tambien afecta, no puedo cerrar la transaccion de las ventas, debiera de ser todo transparente para los dos usuarios.

Mejor seria tenerlo todo en una misma computadora pero no es viable .

no se si me he explicado, pero que le tendria que añadir para que no hubiera problemas con el deadlock.
mientras voy a reeler el documento que compartio casimiro y bucear en el foro a ver si me aclaro. .
Responder Con Cita
  #4  
Antiguo 19-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que estás un poco "perdido"

¿Qué componentes tiene Zeos? ¿ zDatabase, zTransaction, zQuery, zSql. ... ?
Responder Con Cita
  #5  
Antiguo 19-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
gracias por contestar,

si ando muy perdido, .

Uso componentes zeos, pero no hay ninguno de transacciones.

Zconnection, zquery y nada mas.
Responder Con Cita
  #6  
Antiguo 19-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Supongo que ese zConecction vendrá a ser un Database + Transaction.

Mira esto, esto y esto.
Responder Con Cita
  #7  
Antiguo 20-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Gracias Casimiro.
La cosa se complica .

El metodo del documento zeos recomienda la transaccion tiserializable para evitar problemas. La cuestion es que es una transaccion cerrada donde los demas usuarios no pueden acceder a ella hasta que se finalice.
Entiendo que, al no haber un procedimiento transaction, zconnection lo hace por ti segun el metodo que elijas, tan solo le metes un insert (eso no lo he leido, sino mas bien lo asumo porque no he visto otra opcion), y hasta que haces un commit o un roolback no acabas la transaccion.
Digo esto porque otros componentes para bases de datos no he usado puesto que uso lazarus, he oido que ibx esta disponible para lazarus tambien pero no lo he probado (tendre que hacerlo porque el acceso es mas rapido que con zeos, segun lo que publico Casimiro).

Bueno ya os dire mis indagaciones.
Responder Con Cita
  #8  
Antiguo 20-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La verdad es que solamente conozco zeos de haber hecho algo sencillo, hace años.
Si puedes cambiar a IBX, hazlo
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
Firebird 2 Lock Timeout para wait transacciones camino Firebird e Interbase 11 30-01-2013 03:03:27
Ayuda en anidación de transacciones crcmartell Conexión con bases de datos 1 04-01-2008 08:05:11
ORA-00054: resource busy and acquire with NOWAIT specified natalinuyo Oracle 2 26-09-2007 22:49:30
Ayuda con transacciones en IBX gorsan Conexión con bases de datos 2 20-07-2007 00:27:52
Lock Timeout para WAIT transacciones camino Firebird e Interbase 0 15-05-2007 01:56:08


La franja horaria es GMT +2. Ahora son las 16:26:23.


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