Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Sobre las nuevas caracteristicas de Firebird 2.01 (https://www.clubdelphi.com/foros/showthread.php?t=43804)

camino 21-05-2007 17:17:49

Sobre las nuevas caracteristicas de Firebird 2.01
 
Un saludo.
He puesto este titulo porque pienso que es la instancia indicada para mi inquietud.

Como podra haber comprobado hace seis dias lance un hilo sobre las nuevas caracteristicas de Firebird 2.01, y entre ellas la que yo inicie con el titulo "Lock Timeout para Wait transacciones" .

Echandole un vistazo vemos que nadie ha intentado una respuesta lo que me indica que hay pocas o ninguna personas en el foro por interesarse en el problema.

Yo estoy haciendo un software para administrar un negocio con 20 computadores donde es posible la concurrencia de transacciones, y estoy convencido que esta caracteristica de Firebird 2.01 viene a solucionar el gran problema de las transacciones.

Por esto, Sr. Moderador, solicitaria que tuviera la amabilidad de indicarme algun correo donde dirigirme para poder aprender sobre el tema.

Desde ya muy agradecido.

marcoszorrilla 21-05-2007 18:59:40

En relación a tu petición lamento que nadie haya dado respuesta a la misma, lo que sucede es que la mayoría utilizamos aún la versión anterior, no obstante creo que podrás encontrar información en los manuales que existen en el sitio de Firebird por otra parte existe una lista exclusiva FireBird, no en el ClubDelphi te hablo de una lista a la que hay que suscribirse.

Espero que se añadan nuevas ideas y aportaciones a este hilo.

Un Saludo.

Casimiro Notevi 21-05-2007 20:21:02

Aquí, en Firebird.com.mx explican un poquito sobre el tema.
De todas formas: "estoy convencido que esta caracteristica de Firebird 2.01 viene a solucionar el gran problema de las transacciones.".
¿A qué problema te refieres?

Casimiro Notevi 21-05-2007 21:12:38

Y aquí, un poquito más, sacado de la "rlsnotes20_0200_101.pdf" de firebird
Cita:

Lock Timeout for WAIT Transactions
A. Karyakin, D. Yemanov
All Firebird versions provide two transaction wait modes: NO WAIT and WAIT. NO WAIT mode
means that lock conflicts and deadlocks are reported immediately, while WAIT performs a blocking
wait which times out only when the conflicting concurrent transaction ends by being committed or
rolled back.
The new feature extends the WAIT mode by making provision to set a finite time interval to wait for
the concurrent transactions. If the timeout has passed, an error (isc_lock_timeout) is reported.
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.
No es mucho, pero algo es :rolleyes:

dec 21-05-2007 22:50:21

Hola,

Cita:

Empezado por camino
He puesto este titulo [Quiero ser leído por un moderador] porque pienso que es la instancia indicada para mi inquietud.

Pues el título no es adecuado para el tema que tratas, así que me voy a permitir editarlo. Por favor, revisa la guía de estilo de estos Foros. Y, por otro lado, sabe que los moderadores no son los "más sabios", ni los que pueden responder "cualquier cosa"... son como todas las demás personas que se dan cita en este sitio Web (como no puede ser de otro modo), así que harías bien en dirigirte a todas estas personas, y no sólo a unas pocas de ellas: tendrás más posibilidades para que alguien pueda echarte una mano.

Casimiro Notevi 22-05-2007 00:06:15

Al principio de participar en foros, yo también creía que los moderadores eran unos monstruos sabios y "omnipresentes" :D

Con el tiempo me dí cuenta que 'sólo' son unos monstruos sabios :D:D:D

camino 22-05-2007 19:50:59

Intento explicar
 
Mis saludos.

Agradezco la preocupacion del Sr. Marcos Zorrilla y aprovecho la oportunidad para que me indique donde realmente puedo investigar.

Ahora bien, tengo claro como funciona y que beneficios programaticos tiene esta nueva instruccion de Firebird 2.01. Mi dilema es que no puedo utilizarla ni con los IBX que vienes con Delphi 7 ni con los FibPlus 6,45.

Si en IBX IbTransaction.Params coloco:
Código:

read_committed
 rec_version
 wait
lock timeout 3

al ejecutarlo da un mensaje de error

TPB Constant() is unknown

y sucede lo mismo con los FibPlus.

Envie un e-mail a los tecnicos de FibPlus y me contestaron que colocando la variable en FIB.pas tendria acceso a esta instruccion.

No dio resultado.

Por eso lo que pido es si alguien ha usado esta instruccion para que me diera una idea como incorporarla en mis programas.

Como un dato todos los querys los hago a traves de procedimientos almacenados.

Aprovecho para responder a Casimiro Notevi.
Cuando un programa esta presente en 20 computadores y estos estan trabajando en puntos de venta, existe una alta probabilidad de que hayan transacciones concurrentes.

Dependiendo de como haya seteado la transaccion puede ocurrir lo ste:

Si la transaccion es NO WAIT se ejecuta una exepcion y, auque este bien manejada por el programador no es trasparente para el usuario.

Si la transaccion es WAIT la transaccion espera hasta que se resuelva el conflicto de concurrencia. Esto seria trasparente para el usuario, a menos que la transaccion que provoco el conflicto no se resuelva(ej. apagado).

Si latransaccion es WAIT con LOCK TIMEOUT 3 significa que la transaccion espera que se resuelva el conflicto hasta por un maximo de tiempo que es el indicado por LOCK TIMEOUT. en caso de no resolverse en ese tiempo, recien el Servidor lanza una excepcion.

Creo amigo Casimiro Notevi que esto economiza tiempo y recursos, por la tanto soluciona un gran problema.

Casimiro Notevi 22-05-2007 20:24:27

Hasta ahora no he tenido ningún problema con las transacciones en las instalaciones de mis clientes, a pesar de que algunos tienen más de 100 ordenadores en la red; no sé, la verdad.

En cuanto a las pruebas que has hecho con:
Cita:

read_committed
rec_version
wait
lock timeout 3
¿Has mirado el código fuente de Firebird?, puede que el parámetro no sea "lock timeout", puede ser "lock_timeout", por ejemplo, aunque no lo he mirado, imagino que será algo así y no 2 palabras separadas.
Espero que puedas solucionarlo.


La franja horaria es GMT +2. Ahora son las 04:03:48.

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