i düzenli olarak yazıyor ve mysql DB tabloları okuyan bir php dosyası var.
i okur ve mysql veritabanında aynı tabloda yazma aynı anda çalışan başka bir yakut dosyası var.
Bu potansiyel sorunlar kurmak olabilir?
PHP veya Ruby ise MySQL umursamıyor. Yes, multiple clients accessing the database simultaneously ile olası sorunları olsa da, vardır. Yanlış gitmek için a lot mümkündür var.
Sadece bir rastgele örnek:
Müşteri 1 a) tamsayı column_x (= 10) 10 çıkarmak ve daha sonra b) column_y tamsayı bu 10 eklemek niyetinde.
Imagine Müşteri 1) aşama a yapılır, ama) b yapmak için yönetir önce, Müşteri 2 ya column_x veya column_y değer pozitif yalnızca bir şeyler yapmak isteyen, geliyor. Ve yanlışlıkla kadar 10 olarak henüz column_y geldi değil, hiçbir şey yapmaz.
Temel olarak, multiple execution threads with a shared state tüm sorunları alıyoruz.
Bu tür sorunları gidermek için, transactions var. MySQL için tablo depolama motoru bağlı olan birkaç transaction isolations levels sağlar.
Böylece, tüm değişiklikler (ve REPEATABLE READ
ve SERIALIZABLE
yalıtım düzeyi için okuma) START TRANSACTION
ile başlayan ve biten bir veritabanı işlem içinde yürütülmelidir { [(3)]} SQL deyimi. Orada bir sorun rutin ortasında, ve ROLLBACK
START TRANSACTION
çağrıdan bu yana yapılan tüm değişiklikleri geri almak için çalıştırmak, bir bütün olarak işlem bitirmek mümkün değil.
Eğer MySQL kullanabilirsiniz kullanarak varsayarsak:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
for more you can refer to:
http://dev.mysql.com/doc/refman/5.0/en/commit.html
http://www.tutorialspoint.com/mysql/mysql-transactions.htm