Nejprve, jak je uvedeno v jiném příspěvku, použijte InnoDB. Je to výchozí úložiště od MySQL 5.5 a je robustnější.
Za druhé, podívejte se na tuto stránku:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
Měli byste použít SELECT ... FOR UPDATE, abyste zabránili ostatním připojením číst řádek, který se chystáte aktualizovat, dokud nebude vaše transakce dokončena:
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
To je lepší než zamykání tabulky, protože InnoDB provádí zámky na úrovni řádků. Výše uvedená transakce by uzamkla pouze řádky, kde id =5... takže další dotaz pracující s id =10 by tento dotaz nezdržel.