List:Spanish« Previous MessageNext Message »
From:Alvaro Jimenez Date:May 8 2003 3:11pm
Subject:Bloqueos de tabla con InnoDB
View as plain text  
Holas

Estoy usando MySQL 4.0.10 con tablas InnoDB y tengo un problema al usar
transacciones, se bloquea toda la tabla. Por ejemplo, el servidor esta en
modo 'transaction isolation level serializable' y tengo un tabla T1 con dos
campos de caracter: 'codigo' y 'data'.

Abro una ventana del cliente MySQL en modo texto y tipeo:

begin;
select * from T1 where codigo = '1';
->devuelve |1|aaaaa|
update T1 set data = 'bbbbb' where codigo = '1';
->lo hace
select * from T1 where codigo = '1';
->devuelve |1|bbbbb|

Abro una segunda ventana y tipeo

select * from T1 where codigo = '1';
->se bloquea hasta que da el time out, esta correcto (la fila esta
->ocupada con una transaccion pendiente
select * from T1 where codigo = '2';
->SE QUEDA BLOQUEADO!!!, hasta que sale el time out

Por que se queda bloqueado si se supone que InnoDB maneja bloqueos a nivel
de fila (row locking)???!

Hasta que no doy COMMIT o ROLLBACK en la primera ventana, no se puede hacer
nada con la tabla, ni UPDATE ni INSERT ni nada.

Hay alguna opcion que debe activarse para tener bloqueos por fila con
InnoDB? El archivo de configuracion tiene habilitados todos los sets tipo
'innodb_%' tal como dice la documentacion.

Gracias por cualquier sugerencia



Thread
Bloqueos de tabla con InnoDBAlvaro Jimenez8 May