Pertama, seperti yang dinyatakan dalam posting lain, gunakan InnoDB. Ini adalah mesin penyimpanan default pada MySQL 5.5 dan lebih kuat.
Kedua, lihat halaman ini:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
Anda harus menggunakan SELECT ... FOR UPDATE untuk mencegah koneksi lain membaca baris yang akan Anda perbarui hingga transaksi Anda selesai:
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
Ini lebih baik daripada mengunci tabel karena InnoDB melakukan penguncian tingkat baris. Transaksi di atas hanya akan mengunci baris di mana id =5... jadi kueri lain yang bekerja dengan id =10 tidak akan ditahan oleh kueri ini.