Primero, como se indicó en otra publicación, use InnoDB. Es el motor de almacenamiento predeterminado a partir de MySQL 5.5 y es más robusto.
En segundo lugar, consulte esta página:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
Debe usar SELECCIONAR ... PARA ACTUALIZAR para evitar que otras conexiones lean la fila que está a punto de actualizar hasta que se complete su transacción:
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
Esto es mejor que bloquear la tabla porque InnoDB realiza bloqueos de nivel de fila. La transacción anterior solo bloquearía las filas donde id =5... por lo que esta consulta no retrasaría otra consulta que funcione con id =10.