Först, som anges i ett annat inlägg, använd InnoDB. Det är standardlagringsmotorn från och med MySQL 5.5 och är mer robust.
För det andra, titta på den här sidan:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
Du bör använda en SELECT ... FÖR UPPDATERING för att förhindra att andra anslutningar läser raden du ska uppdatera tills din transaktion är klar:
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
Detta är bättre än att låsa tabellen eftersom InnoDB gör radnivålås. Transaktionen ovan skulle bara låsa raderna där id =5... så en annan fråga som arbetar med id =10 skulle inte hållas uppe av den här frågan.