Servercommunity Foren-Übersicht Servercommunity
Das informative Forum für Fragen rund um Server
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Ganz viele Datenbankfragen

 
Neues Thema eröffnen   Neue Antwort erstellen    Servercommunity Foren-Übersicht -> Datenbanken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Feagor



Anmeldedatum: 28.07.2003
Beiträge: 305
Wohnort: Sögel (Emsland)

BeitragVerfasst am: Di Dez 21, 2004 22:21    Titel: Ganz viele Datenbankfragen Antworten mit Zitat

Nabend zusammen!

Ok, ich hab ein Problem mit meiner MySQL-Datenbank.
Und zwar hab ich ein PHP-Script mit einer Funktion, die einen Update-Befehl und einen Insert nacheinander absetzt. Es geht um eine Baufunktion in einem Online-Spiel, erst wird das Geld abgezogen, dann der Bau gestartet.
Jetzt haben aber ein paar Leute herausgefunden, dass sie das Formular, was mein PHP-Funktion aufruft, ja auch ganz schnell hintereinander abschicken können (Return gedrückt halten o.ä.). Das Problem dabei ist, dass MySQL das Update nur einmal ausführt, das Insert aber jedes Mal. Bzw. das Update dauert so lange, dass die Funktion zweimal fast gleichzeitig aufgerufen wird und das Update noch nicht fertig ist, also zweimal auf die gleichen Daten "geupdatet" wird.
Kann ich irgendwie erreichen, dass entweder beide Anfragen ausgeführt werden, oder keine? Oder, dass die Tabelle so lange gesperrt ist, wie das Update dauert?

Und dann wollt ich noch gern wissen, ob jemand von euch Erfahrungen mit anderen Datenbank-Systemen hat. Mein MySQL macht nämlich ab und zu bei Spitzenzeiten schlapp. Wie steht's mit MaxDB oder Firebird? Oder Postgres? Ist SQLite eigentlich auch für viele gleichzeitige Zugriffe ordentlich geeignet? Noch ordentliche andere im kostenlosen Bereich?

Wenn jemand passende Artikel oder Benchmarks oder irgendwelche anderen Materialien hat, würd ich mich sehr darüber freuen.

Danke schonmal für die Antworten!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Anton



Anmeldedatum: 02.05.2004
Beiträge: 173
Wohnort: Massing

BeitragVerfasst am: Di Dez 21, 2004 22:54    Titel: Antworten mit Zitat

ohne jetzt groß die syntax zu kennen, einfach mal in den raum geworfen:


http://dev.mysql.com/doc/mysql/de/LOCK_TABLES.html


wenn die funktion keinen sinn ergeben würde, würds die ned geben Very Happy


nur mal kurz drüber geflogen:

ich würd die tabellen sperren (für schreib-zugriff), dann update+insert machen, danach wieder entsperren ...

und damits keine probleme gibt, im php-skript erst überprüfen, ob die tabelle gesperrt ist, wenn ja, in ne while-schleife mit sleep(1) jagen, und danach wieder überprüfen, ob locked... erst wenn unlocked, selber sperren lassen und dann selber updaten etc ...


aber wie gesagt, kenne den befehl nur vom hörensagen, noch nicht selber nutzen (müssen) ...

viel erfolg!

mfg,
Anton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Henning



Anmeldedatum: 23.06.2003
Beiträge: 1541
Wohnort: Vienna, AT

BeitragVerfasst am: Mi Dez 22, 2004 11:55    Titel: Antworten mit Zitat

Anton hats gesagt:
Du solltest dringend die Tabelle sperren beim Zugriff.
Zu SQLite: Sehr robust und flink, auch bei größeren Sachen - aber nicht sooo sehr mein Fall Smile
Btw.: Es gibt auch einen PHPMyAdmin für SQLite.
_________________
Hallooooo Spongebob!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Servercommunity Foren-Übersicht -> Datenbanken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de