PDA

Ver la Versión Completa : Firebird 2 Lock Timeout para wait transacciones


camino
22-07-2008, 00:22:58
Hola amigos. Hace poco se cumplio un año de mi consulta al foro y, lamentablemente no obtuve una respuesta.

Los antecedentes estan aqui:

http://www.clubdelphi.com/foros/showthread.php?t=43564&highlight=Lock+Timeout+para+Wait+transacciones

y aqui

http://www.clubdelphi.com/foros/showthread.php?t=43804&highlight=wait+5

Creo que en estos dos hilos estan todos los antecedentes del caso, Realmente me gustaria tener una respusta. Tan simple como que tengo que programar para que resulte.

Desde ya muchas gracias;

donald shimoda
22-07-2008, 00:50:13
Hola amigos. Hace poco se cumplio un año de mi consulta al foro y, lamentablemente no obtuve una respuesta.

Los antecedentes estan aqui:

http://www.clubdelphi.com/foros/showthread.php?t=43564&highlight=Lock+Timeout+para+Wait+transacciones

y aqui

http://www.clubdelphi.com/foros/showthread.php?t=43804&highlight=wait+5

Creo que en estos dos hilos estan todos los antecedentes del caso, Realmente me gustaria tener una respusta. Tan simple como que tengo que programar para que resulte.

Desde ya muchas gracias;


Amigo, te doy la vuelta la pregunta, perdon, pero para que alguien querria hilar tan fino?

Las transacciones se manejan fácil si tu sistema esta bien diseñado. Con firebird específicamente, cada vez haces un query rollback a la transacción y cada vez que aplicas un cambio (update, delete) simplemente commit, si algo sale mal rollback.

No hay nada mas ahi.. me parece que te estas complicando inutilmente.
Tengo sistemas funcionando 24 horas por años con estas condiciones y nunca tuve un problema.


Saludos.

celades1
22-07-2008, 07:01:21
Hola

Yo tambien tube tu misma inquietud y el mismo resultado, por lo que lo deje estar, ya que el trabajo diario me hizo olvidar el tema. Por tanto me añado a tu peticion, y decir que a veces es necesario hilar fino, ademas recordaros que los que ya tenemos una edad cuando programamos con clipper este tema estaba solucionado (aunque no sea muy exacta la comparación).

Saludos

duilioisola
22-07-2008, 09:05:50
He intentado Con FibPlus 6.45 y con el IBX que viene con Delphi 7.
y no he podido setear este modo.
Yo he leido que habrá que esperar a que los que programan los componentes de acceso a FB tengan en cuenta esta característica y la implementen.

Timeout intervals are specified per transaction, using the new TPB constant isc_tpb_lock_timeout in the API or, in DSQL, the LOCK TIMEOUT <value> clause of the SET TRANSACTION statement.

Parece ser que se realiza a travez de una nueva API.
Supongo que deberás estar atento a las noticias de IBObjects, FIBPlus, MDO, etc.

camino
26-07-2008, 14:56:15
Cuando trataba de utilizar la instruccion 'Lock Timeout' escribi a Devrace FibPlus para ver si de ellos obtenia alguna respuesta. Buscando por ahi la encontre y se la transcribo. Yo no uso FibPlus, asi es que a lo mejor Uds. pueden encontrar la solucion.


Pregunta:

how I can, with FibPlus, execute thenew command LOCK TIMEOUT <value> in transactions with Firebird 2.01.


Respuesta

I think no. You can use property TpFIBTransaction.Timeout and .Timeoutaction, doing lock in the select -sql.


Espero que sea de algun aporte.

camino
02-08-2008, 14:34:34
Hola amigos.

En principio agradezco la intervencion de celades1 por tener la inquietud de investigar los beneficios de Firebird.

Le pregunto a donald shimoda; para que darse el trabajo una cantidad de profesionales en optimizar Firebird si lo que tiene basta y sobra?

Pues bien, pienso que en la medida que nuestro Firebird sea mejor y mas completo, mas garantias tendran nuestros clientes al usarlo.

Hago un llamado a investigar este hilo y no esperar que vuelva a escribir el proximo año para ver si alguien se interesa.

Gracias.

ASAPLTDA
29-01-2013, 17:55:18
Hola amigos.

Hola estoy intersado en el tema ya que con esta tecnica puedo bloquear registros temporalmente mientras se termina el proceso y no ser leido por otro usuario. Pero quisera saber si encontro la solucion a contralar el tiempo que toma un registro sin ser leeido para generar error de registro bloqueado y asi poder procesando el siguiente registro

Gracias

donald shimoda
29-01-2013, 18:01:20
Hola amigos.

En principio agradezco la intervencion de celades1 por tener la inquietud de investigar los beneficios de Firebird.

Le pregunto a donald shimoda; para que darse el trabajo una cantidad de profesionales en optimizar Firebird si lo que tiene basta y sobra?

Pues bien, pienso que en la medida que nuestro Firebird sea mejor y mas completo, mas garantias tendran nuestros clientes al usarlo.

Hago un llamado a investigar este hilo y no esperar que vuelva a escribir el proximo año para ver si alguien se interesa.

Gracias.

Bueno 5 años después veo tu mensaje, no me demore nada. Y? Has sacado grandes beneficios en reinventar la rueda? Compartelo!

donald shimoda
29-01-2013, 18:02:15
Hola amigos.

Hola estoy intersado en el tema ya que con esta tecnica puedo bloquear registros temporalmente mientras se termina el proceso y no ser leido por otro usuario. Pero quisera saber si encontro la solucion a contralar el tiempo que toma un registro sin ser leeido para generar error de registro bloqueado y asi poder procesando el siguiente registro

Gracias

Amigo, cuéntame un caso de uso exacto por favor, me muero de curiosidad (no estoy siendo sarcástico).

ASAPLTDA
29-01-2013, 21:34:55
Amigo, cuéntame un caso de uso exacto por favor, me muero de curiosidad (no estoy siendo sarcástico).

Tenemos la fila de espacios disponibles(8000) los cuales seran marcados cuando se venda el numero de silla, existen varios vendedores a los cuales van entregando el numero de espacio a vender

El la casilla de venta 1 se ofrece el espacio numero '"A" el cual POSIBLEMENTE sera ocupado , acto que se confirma en unos pocos segundos o puede demorarse unos minutos (5/10 minutos), en la casilla 2 se ofrece otro espacio que no debe ser el mismo que afresca la casilla 1 , si el registro esta marcado como en proceso de actualizacion el sistema al leer el registro y determinar que esta en proceso de actualizacion salta el registro al vencerse el tiempo de espera para que un registro pueda ser leido.

Para este casa la casilla de venta al leer el registro no efectuo cambio en la base de datos solo ejecuto la accion de FOR SELECT ESTADO FROM TABLA A WHERE ESTADO = LIBRE CON BLOQUEO
La casilla 2 leyo SELECT ESTADO FROM TABLA A WHERE ESTADO = LIBRE CON BLOQUEO y no lee el registro que esta en uso por LA CASILLA 1

y asi sucesiamente.
No Recuerdo en que version de FIREBIRD salido esta herramiento tal vez 2 , yo la he usado en sistema as400 el bloqueo pesimista desde hace mas o menos 30 anos y funciona bien por ejemplo para bloquear cuentas bancarias a las cuales se estan efectuando cambios en el saldo.

Como veo que estas muy interesado en el tema creo que has hecho pruebas detalladas del manejo de bloqueo con esta funcion y debes conocer como hacer para cambiar el tiempo de generacion del error de registro bloqueado que es lo que busco solucionar ya que no se como efectuar la explicacion que hay en el manual (lock time out + set transaction ) en un procedimiento

Agradesco de antemano compartas la investigacion que has hecho al respeto

Aprovecho este para saber si has trabajado con Data Abstract de remobject para que compartar la experiencia que ha tenido con estdo

donald shimoda
29-01-2013, 22:07:37
Agradesco de antemano compartas la investigacion que has hecho al respeto

Aprovecho este para saber si has trabajado con Data Abstract de remobject para que compartar la experiencia que ha tenido con estdo

Te soy sincero, veo demasiado control pasado a la base de datos. Prefiero manejarlo a nivel de aplicación para justamente, ahi entra data abstract, poder abstraerme del motor y funciona de la misma manera con cualquiera de ellos.

Saludos.

mightydragonlor
30-01-2013, 03:03:27
La verdad es que es facíl de usar, se usa en un Stored procedure, Trigger o execute block.

SET TRANSACTION READ WRITE; INSERT INTO ... INSERT INTO ... if(all_OK){ COMMIT; }else{ ROLLBACK; }
Pero la verdad no tiene sentido usarlo, excepto para transacciones muy cortas donde se requiere un bloqueo específico, es decir, asiganción de consecutivos de facturación masiva, que se encuentra en diferentes puntos y se ejecuta en el mismo momento, es lo único que se me ocurre, para tiempos largos hay medidas mucho mas prácticas.

Saludos.