Gebruik eerst, zoals vermeld in een ander bericht, InnoDB. Het is de standaard opslagengine vanaf MySQL 5.5 en is robuuster.
Ten tweede, kijk op deze pagina:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
U moet een SELECT ... FOR UPDATE gebruiken om te voorkomen dat andere verbindingen de rij lezen die u gaat bijwerken totdat uw transactie is voltooid:
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
Dit is beter dan de tafel te vergrendelen, omdat InnoDB vergrendelingen op rijniveau uitvoert. De bovenstaande transactie zou alleen de rijen vergrendelen waar id =5... dus een andere zoekopdracht die werkt met id =10 zou niet worden opgehouden door deze zoekopdracht.