Entrar
¿Nuevo usuario? Inscribirme
DesarrolloDelphi · Desarrollo de Software en Borland Delphi
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés hacer búsquedas de antiguos mensajes del grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Uso de Provider y ClientDataset   Lista de mensajes  
Responder | Reenviar Mensaje #5792 de 7331 |
Re: [Delphi] Uso de Provider y ClientDataset

La InnoDB a menos que me equivoque hace lock sobre
records, y cuando se escribe.

Por lo cual tus problemas son de concurrencia, con dos
transacciones distintas queres escribir sobre el mismo
record.

Por lo que veo de lo que decis, intuyo que al iniciar
la transacción; tomas datos de la base para
identificar el pedido.

Tu problema es que si inician la transacción en dos
lados a la vez, toman el mismo dato identificatorio.

Tenes que asegurarte de que jamas se lea el mismo en
dos transacciones distintas; ya sea con un middleware
que asigne los número identificatorios sobre cada
transacción o que la transacción los tome en el último
momento, el de guardar los datos en la tabla; que
tampoco es 100% efectiva, pero te va a ayudar mucho.

--- Pablo Javier Fernández <pjfernan@...>
escribió:

> Hola Gabriel:
>
> En principio, deberías asegurarte que no haya
> transacciones muy extensas. O
> bien que un formulario no bloquee una tabla. Bien
> podrías hacer commits
> parciales, digamos como para reservar los campos
> clave y luego se continúa
> con la carga de los campos más extensos.
> O bien, recuperar toda la carga en campos de texto,
> y luego de terminada la
> carga, intentar con el begin transact.
> También, asegurate que todas las consultas se hagan
> sobre vistas, y no sobre
> las tablas en sí. Bueno, en fin. Lo que no creo
> necesario, es arriesgarse a
> inconsistencias, porque luego hay que hacer un
> tratamiento extra.
>
> Saludos, Pablo.
>
>
> El día 2/06/06, Gabriel Mahiques
> <mahiques@...> escribió:
> >
> > Amigos, tengo un problema serio y me esta
> matando. Ya he buscado la
> > solución en distintas fuentes y no he podido
> encontrarla.
> > Les explico brevemente.
> > Tengo un servidor pentium 4 con 2 gb de memoria
> ram y 124 gb de disco
> > duro. Sobre este servidor tengo montado Linux y
> Mysql server configurado
> > para usar InnoDB.
> > En este momento hay un promedio de 80 usuarios
> colgados a varias bases
> > de datos que tenemos andentro del motor.
> > En una aplicacion de ordenes de compra que
> desarrolle usando Zeos hay
> > veces que cuando el usuario desea guardar los
> cambios el servidor
> > devuelve un tiempo de bloqueo en espera agotado.
> > Yo uso como modo de programación el uso de los
> componentes de data
> > acces. Cuando alguien quiere modificar esa orden
> de compra hago
> > StartTransaction y cuando salva los cambios hago
> Commit. Las tablas en
> > modo edición en un momento dado son tres (Pedido,
> detalle del pedido y
> > distribución en fase de cada item del detalle).
> > Ahora bien, cada tanto a los usuarios cuando
> quieren guardar un cambio
> > les da ese error.
> > Alguna vez alguien menciono en el foro la
> posibilidad de linkear los
> > componentes de Zeos (query y table) a Provider y
> clientdataset, me
> > preguntaba si esto puede ayudarme, ser una
> solución, puesto que usar
> > provider y clientdata set no mantienen la conexión
> abierta y solo abre
> > cuando tiene que guardar (o algo por el
> estilo...). Si alguien me puede
> > aconsejar...
> >
> > Desde ya gracias.
> >
> >
> > ------------------------------
> > DesarrolloDelphi:
> > Desarrollo de Software en Borland Delphi
> > ------------------------------
> > Direcciones de la lista:
> > Publicar un mensaje:
> DesarrolloDelphi@...
> > Suscribirse........:
> DesarrolloDelphi-Subscribe@...
> > Desuscribirse......:
> DesarrolloDelphi-Unsubscribe@...
> > Administrador......:
> DesarrolloDelphi-Owner@...
> > Página de la lista.:
> http://www.gruposyahoo.com.ar/group/DesarrolloDelphi
> > ------------------------------
> >
> >
> > ------------------------------
> > *Enlaces de Yahoo! Grupos*
> >
> > - Para visitar el sitio web del grupo, andá a:
> >
> http://ar.groups.yahoo.com/group/DesarrolloDelphi/
> >
> > - Para cancelar tu suscripción a este grupo,
> enviá un mensaje a:
> >
>
DesarrolloDelphi-unsubscribe@...<DesarrolloDelphi-unsubscribe@gru\
posyahoo.com.ar?subject=Unsubscribe>
> >
> > - El uso de Yahoo! Grupos está sujeto a las
> Condiciones del servicio
> > de Yahoo!
> <http://ar.docs.yahoo.com/info/utos.html>.
> >
> >
>
>
> --
> Pablo Javier Fernández
> pjfernan@...
>


__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar



Vie, 2 de Jun, 2006 3:51 pm

podostro
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #5792 de 7331 |
Desplegar mensajes Autor Ordenar por fecha

Amigos, tengo un problema serio y me esta matando. Ya he buscado la solución en distintas fuentes y no he podido encontrarla. Les explico brevemente. Tengo un...
Gabriel Mahiques
miyaghy
Sin conexión Enviar correo
2 de Jun, 2006
2:35 pm

Hola Gabriel: En principio, deberías asegurarte que no haya transacciones muy extensas. O bien que un formulario no bloquee una tabla. Bien podrías hacer...
Pablo Javier Ferná...
pjf_tdh
Sin conexión Enviar correo
2 de Jun, 2006
2:58 pm

Me olvidaba, gabriel: Aca tenes el como y porque de los locks en innoDB http://dev.mysql.com/doc/refman/5.1/en/innodb-lock-modes.html ... ...
Maximiliano Podostroiec
podostro
Sin conexión Enviar correo
2 de Jun, 2006
3:58 pm

La InnoDB a menos que me equivoque hace lock sobre records, y cuando se escribe. Por lo cual tus problemas son de concurrencia, con dos transacciones distintas...
Maximiliano Podostroiec
podostro
Sin conexión Enviar correo
2 de Jun, 2006
4:03 pm

Gabriel: El ClientDataset abre automáticamente una transacción guarda los datos y cierra la transacción, es decir no tienes que preocuparte por realizar el...
Guille
guille2273
Sin conexión Enviar correo
2 de Jun, 2006
11:25 pm
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda