सबसे पहले, जैसा कि किसी अन्य पोस्ट में बताया गया है, InnoDB का उपयोग करें। यह MySQL 5.5 के रूप में डिफ़ॉल्ट स्टोरेज इंजन है और अधिक मजबूत है।
दूसरा, इस पेज को देखें:http:// dev.mysql.com/doc/refman/5.5/hi/innodb-locking-reads.html
जब तक आपका लेन-देन पूरा नहीं हो जाता, तब तक आप जिस पंक्ति को अपडेट करने वाले हैं उसे पढ़ने से रोकने के लिए आपको SELECT... FOR UPDATE का उपयोग करना चाहिए:
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
यह टेबल को लॉक करने से बेहतर है क्योंकि InnoDB रो लेवल लॉक करता है। ऊपर दिया गया लेन-देन केवल उन पंक्तियों को लॉक करेगा जहां id =5... इसलिए id =10 के साथ काम करने वाली कोई अन्य क्वेरी इस क्वेरी द्वारा रोकी नहीं जाएगी।