![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. ![]() |
#2
|
||||
|
||||
La verdad es que no debe suceder nunca un deadlock.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
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
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:
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. ![]() |
#4
|
||||
|
||||
Creo que estás un poco "perdido"
![]() ¿Qué componentes tiene Zeos? ¿ zDatabase, zTransaction, zQuery, zSql. ... ?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
gracias por contestar,
si ando muy perdido, ![]() Uso componentes zeos, pero no hay ninguno de transacciones. Zconnection, zquery y nada mas. |
#6
|
||||
|
||||
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
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. |
#8
|
||||
|
||||
La verdad es que solamente conozco zeos de haber hecho algo sencillo, hace años.
Si puedes cambiar a IBX, hazlo ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
||||
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 |
![]() |
|