MySQL - "Cuelgue" de mysql sin explicacion

 
Vista:
sin imagen de perfil

"Cuelgue" de mysql sin explicacion

Publicado por Alejandro (13 intervenciones) el 01/10/2010 19:57:05
Programamos un sistema con visual foxpro 9 y utilizamos una db en mysql, las tablas son innodb y para actualizar la db usamos cursor adapter
El problema que tenemos es que mysql queda colgado en la actualizacion de una tabla cualquiera (varios usuarios acceden al mismo tiempo para actualizarla), como si esta quedaria bloqueada o demorase en desbloquearse despues de una actualizacion (cosa que no deberia ser posible en mysql) por lo que el sistema en fox queda esperando que mysql responda como colgado, despues de un tiempo el sistema vuelve a la normalidad pero no sabemos porque ocurre ni podemos preveer cuando va a ocurrir, sucede con cualquier tabla de mysql
En el administrador de mysql (User Connections) se puede ver el usuario que esta "colgado" en el Command: Query | State: Updating | Info: "UPDATE table SET INDEX ......."
Alguna idea de como solucionar esto ? hay alguna configuracion que estamos omitiendo?

Alejandro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:

Publicado por martin (150 intervenciones) el 02/10/2010 16:55:52
Que es lo que hace esa actualización? lo hacen con un storeprocedure?o quien ejecuta las tareas es el cliente?

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:

Publicado por Alejandro (13 intervenciones) el 02/10/2010 19:30:08
Que es lo que hace esa actualización?
Actualiza campos de una tabla mysql

lo hacen con un storeprocedure?
No utiliza ningun storeprocedure. la actualizacion es mediante una sentencia Update generada automaticamente por foxpro, foxpro tiene una clase llamada CursorAdapter que maneja distintas fuentes de datos, entre ellas mysql

o quien ejecuta las tareas es el cliente?
Las tareas las ejecuta un programa cliente-servidor hecho en visual foxpro 9

Les agradezco si alguien nos puede tirar alguna pista
Gracias
Alejandro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:

Publicado por martin (150 intervenciones) el 03/10/2010 01:00:11
Proba reemplazar el update por un store procedure que haga el update, deja que trabaje el server y ademas descartas que no sea que el cliente el que este bloqueando la tabla.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:

Publicado por Gonzalo GC (339 intervenciones) el 03/10/2010 15:20:25
Sería bueno que revisases la sintaxis de ese UPDATE. Si permanece mucho tiempo ejecutándolo lo más probable es que ese UPDATE no sea suficientemente discriminante y esté realizando un UPDATE masivo, con lo cual puede tardar mucho en ejecutarlo, se está ejecutando algún TRIGGER que no estuvieses conisderando, o estás teniendo un conflicto con la sintaxis por el uso de palabras reservadas.
. En cualquier caso lo seguro es que hay algún defecto lógico en la tarea, y a mí le llama poderosamente la atención este segmento:
"...SET INDEX ..."
ya que INDEX es una palabra reservada, y no deberías estar usandola como nombre de campo.

¿Puedes postear la sentencia completa?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

"Cuelgue" de mysql sin explicacion

Publicado por Alejandro (13 intervenciones) el 19/10/2010 21:42:23
Tengo el log y una captura de pantalla del cuelgue, no encontre problemas de palabras reservadas ni nada parecido, solo un uso raro del set commit y el commit, me pueden pasar sus direcciones de correo para que les mande el log y el jpg de la captura de pantalla?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:

Publicado por Alejandro (13 intervenciones) el 19/10/2010 21:49:02
esta es parte del archivo de log de mysql, lo marque con asteriscos a las partes importantes

Aqui se inicia la secuencia que provoca el que PID3 quede colgado como 56 segundos

101019 16:16:13 1 Query SHOW GLOBAL STATUS
1 Query SHOW INNODB STATUS
3 Query SELECT Talonarios.idtalonario, Talonarios.letra, Talonarios.suc, Talonarios.siguiente, Talonarios.modoemision, Talonarios.lineas, Talonarios.cai, Talonarios.vtocai, Talonarios.comprobantefiscal, Talonarios.copias, Talonarios.numcompimp, Talonarios.nombreimp, Impresoras.marca, Impresoras.modelo FROM Talonarios LEFT OUTER JOIN Comptipo ON Talonarios.idtalonario = Comptipo.idtalonario LEFT OUTER JOIN Impresoras ON Talonarios.nombreimp = Impresoras.nombreimp WHERE Comptipo.idcomp = 1.50000000000000000e+001
3 Query
3 Query Select * From `vfxRes`
3 Query Select * From `vfxRes`

*******************************************************************************************
De acuerdo a la captura del error esta seria la linea en la que se queda esperando
*******************************************************************************************

3 Query UPDATE vfxRes SET `INDEX`=_latin1'0' ,`LAYOUT`=_latin1' 46 46 422 345 1440 900\r\n 0-225 422 345 1440 900\r\n' ,`TOOLBAR`=0 WHERE `INDEX`=_latin1'0' AND `LAYOUT`=_latin1' 46 46 422 345 1280 800\r\n 0-225 422 345 1440 900\r\n' AND `TOOLBAR`=0 AND `IDVFXRES`=257

*******************************************************************************************

101019 16:16:14 1 Query SHOW GLOBAL STATUS
1 Query SHOW INNODB STATUS
*
*
* entre estos dos logs hay un monton de operaciones del PID 1 y el 4
*
*
101019 16:17:08 1 Query SHOW GLOBAL STATUS
1 Query SHOW INNODB STATUS

****************************************
Recien aqui vuelve a operar el PID3
****************************************
101019 16:17:09 1 Query SHOW GLOBAL STATUS
1 Query SHOW INNODB STATUS
3 Query SELECT Operdet.idoperdet, Operdet.idoper, Operdet.idart, ' ' AS codigo,Operdet.articulo, Operdet.ent1, Operdet.ent2, Operdet.sal1, Operdet.sal2,Operdet.bruto, Operdet.bruto as brutoorig, Operdet.descuentos, Operdet.bonificaciones,Operdet.netograv, Operdet.tasa, Operdet.exento, Operdet.coefimpint,Operdet.impint, 000000000.0000 as total, Operdet.iddep, Operdet.calcstock, Operdet.calcstock AS precioabierto, Operdet.documento,Operdet.tipo,Operdet.idodkit,Operdet.idsubart,0.0 AS idtasa, ' ' as impfiscal, 0.0 as num FROM operdet Where idoper=_latin1'ABD87A3B-5315-5647-846A-132B7566A788' and tipo <> 'ARK'
3 Query SELECT Formapago.idfpago, Formapago.idoper, Formapago.idcondpago,Formapago.importe FROM formapago Where idoper=_latin1'ABD87A3B-5315-5647-846A-132B7566A788'
3 Query SELECT Aplicaciones.idaplic, Aplicaciones.idoper,Aplicaciones.idaplicado, Comprobantes.descripcion, Operaciones.fecha,Operaciones.letra, Operaciones.suc, Operaciones.numero,Operaciones.total FROM aplicaciones LEFT OUTER JOIN operaciones ON Aplicaciones.idaplicado = Operaciones.idoper LEFT OUTER JOIN comprobantes ON Operaciones.idcomp = Comprobantes.idcomp Where idoper=_latin1'ABD87A3B-5315-5647-846A-132B7566A788'
3 Query SELECT Cheques.idcheque, Cheques.numero, Cheques.codbanco, Cheques.codsucbanco, Cheques.idrec,Cheques.ident, Cheques.fecha, Cheques.vencim, Cheques.idcta,Cheques.importe, Cheques.estado, Cheques.idoprec, Cheques.idopent, Cheques.idfpago FROM Cheques Where Cheques.idoprec=_latin1'ABD87A3B-5315-5647-846A-132B7566A788'
3 Query SELECT Ordenescupones.idorden, Ordenescupones.idfpago,Ordenescupones.importe,Ordenescupones.numtarjeta, Ordenescupones.cuotas,Ordenescupones.comprobante, Ordenescupones.numafiliado,Ordenescupones.nombre, Ordenescupones.idoper FROM Ordenescupones Where Ordenescupones.idoper=_latin1'ABD87A3B-5315-5647-846A-132B7566A788'
3 Query
3 Query Select * From `vfxRes`
3 Query Select * From `vfxRes`
3 Query UPDATE vfxRes SET `INDEX`=_latin1'0' ,`LAYOUT`=_latin1' 61 92 789 424 1440 900\r\n 0-225 789 424 1440 900\r\n' ,`PAGE`=1.00000000000000000e+000 ,`TOOLBAR`=0 WHERE `INDEX`=_latin1'0' AND `LAYOUT`=_latin1' 61 92 789 424 1440 900\r\n 0-225 789 424 1440 900\r\n' AND `PAGE`=1.00000000000000000e+000 AND `TOOLBAR`=0 AND `IDVFXRES`=226
3 Query UPDATE vfxRes SET `INDEX`=_latin1'[]' ,`DESCENDING`=0 ,`LAYOUT`=_latin1'1 85.00000 2 63.00000 3 30.00000 4 30.00000 5 65.00000 6 376.00000 7 80.00000 0' WHERE `INDEX`=_latin1'[]' AND `DESCENDING`=0 AND `LAYOUT`=_latin1'1 85.00000 2 63.00000 3 30.00000 4 30.00000 5 65.00000 6 376.00000 7 80.00000 0' AND `IDVFXRES`=227
3 Query UPDATE vfxRes SET `INDEX`=_latin1'[]' ,`DESCENDING`=0 ,`LAYOUT`=_latin1'1 80.00000 2 250.00000 3 80.00000 4 75.00000 0' WHERE `INDEX`=_latin1'[]' AND `DESCENDING`=0 AND `LAYOUT`=_latin1'1 80.00000 2 250.00000 3 80.00000 4 75.00000 0' AND `IDVFXRES`=229
3 Query UPDATE vfxRes SET `INDEX`=_latin1'[]' ,`DESCENDING`=0 ,`LAYOUT`=_latin1'1 108.00000 2 80.00000 3 30.00000 4 40.00000 5 75.00000 6 104.00000 0' WHERE `INDEX`=_latin1'[]' AND `DESCENDING`=0 AND `LAYOUT`=_latin1'1 108.00000 2 80.00000 3 30.00000 4 40.00000 5 75.00000 6 104.00000 0' AND `IDVFXRES`=230
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar