Hello,
Lock table blablabla write;
DELETE FROM blablabla WHERE id = $id
INSERT INTO blablabla (id, wert) VALUES ('$id', 'neuer_wert')
unlock tables;OK. Klar. Um komplett konform zu bleiben und kein Risiko einzugehen macht das sinn...
iss aber bei kleinen anwendungen nicht wirklich nötig, solang man nicht massig zugriffe und komplexe anderslaufende abfragen hat ...
Das mit 'kleinen' oder 'großen' Anwendungen nichts zu tun, sondern nur mit Zufall.
Anwendungen mit vielen Nutzern und professionellen Anwendungen benutzen ganz bestimmt nicht MySQL, wenn der Planer haftet und ganz bei Trost ist.
Dann wird man garantiert ein DBMS mit Transaktions-Steuerung und Transaktions-Logging benutzen, um konkurrierende Vorgangsvrarbeitungen und kontinuierliches Backup gewährleisten zu können. davon ist MySQL bestimmt noch vier Generationen entfernt.
Das Binden zusammengehörender Queries durch eine geschickte Locking-Strategie sollte man daher bereits von Anfang an einführen. Bei wenigen Zugriffen kann man die Fehler, die dennoch auftreten, häufig noch lokalisieren und ausmerzen. Wenn die Zugriffszahlen erst gestigen sind, kann man da meistens nichts mehr reparieren, da das Chaos dann alles zerschreddert.
Ich hatte da letztens einen MySQL-Reparaturfall zu erledigen, an dem ich mir fast die Zähne ausgebisen hätte. Wenn die Zugriffszahlen stiegen, kamen immer merkwürdige Fehlermeldungen in den Logs an. '10 is not a valid mysql-ressoeurce' oder so ähnlich. Bis ich darauf kam, dass der ursprüngliche Programmentwickler schlampig gecoded hatte und immer das mysql_free_result() (usw.) vergessen hatte, waren ca. 8 Stunden rum.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau