Verwenden Sie zunächst, wie in einem anderen Beitrag angegeben, InnoDB. Es ist die standardmäßige Speicher-Engine ab MySQL 5.5 und robuster.
Sehen Sie sich zweitens diese Seite an:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
Sie sollten ein SELECT ... FOR UPDATE verwenden, um zu verhindern, dass andere Verbindungen die zu aktualisierende Zeile lesen, bis Ihre Transaktion abgeschlossen ist:
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
Dies ist besser als das Sperren der Tabelle, da InnoDB Sperren auf Zeilenebene durchführt. Die obige Transaktion würde nur die Zeilen sperren, in denen id =5 ist ... also würde eine andere Abfrage, die mit id =10 arbeitet, nicht von dieser Abfrage aufgehalten werden.