Anna Bolika
Erfahrenes Mitglied
Ich möchte in einem CMS/Forum die nested sets beim Anlegen/Verschieben von Seiten/Beiträgen neuberechnen. Da das nicht so furchtbar häufig vorkommt, würde ich gern auf Transactions verzichten und das meines Wissens nach etwas schnellere MyIsam-Format verwenden.
Meine Fragen:
1. Wenn ich eine Tabelle sperre (nur WRITE). Was geschieht dann mit Schreib-Befehlen, die inzwischen an die Datenbank gesandt werden. Sehe ich das richtig, dass die abgewiesen werden, oder kommen die in einen Buffer und werden nach dem UNLOCK automatisch ausgeführt?
2. Da ich mal von ersterem ausgehe: Ich habe nichts gefunden, um abzufragen, ob eine Tablelle geLOCKt wurde. Ist die einzige Möglichkeit dazu, die Fehlermeldung auszuwerten?
3. Da ein Forum ja kein Chat ist, gehe ich mal davon aus, dass dort nicht standardmäßig mehrere Inserts gleichzeitig abgeschossen werden. Ich hatte mir die Vorgehensweise so vorgestellt, dass ich die Tabelle locke, einen neuen Beitrag einfüge, ggf. die nested-set-daten neu berechne und sie wieder unlocke. Kommt ausgerechnet während diesem Vorgang - was ich als sehr seltenen Fall ansehe - ein weiterer Schreibvorgang, lass ich den einfach mit sleep() ne Zehntel-Sekunde warten und schicke ihn dann erneut ab. Wie skuril wirkt dies auf euch?
4. Warum kein InnoDB? Ich hatte mal versehentlich auf ner lokalen Testinstallation InnoDB-Tabellen erstellt. Daraufhin lief diese Installation wirklich erheblich langsamer. Da ich nur ein Forum/CMS habe, halte ich die Vorgehensweise (siehe 3.) für einen guten Kompromiss.
Naja. Wäre nett, wenn mir jemand nen Tipp gibt und mir die Meinung sagt
Meine Fragen:
1. Wenn ich eine Tabelle sperre (nur WRITE). Was geschieht dann mit Schreib-Befehlen, die inzwischen an die Datenbank gesandt werden. Sehe ich das richtig, dass die abgewiesen werden, oder kommen die in einen Buffer und werden nach dem UNLOCK automatisch ausgeführt?
2. Da ich mal von ersterem ausgehe: Ich habe nichts gefunden, um abzufragen, ob eine Tablelle geLOCKt wurde. Ist die einzige Möglichkeit dazu, die Fehlermeldung auszuwerten?
3. Da ein Forum ja kein Chat ist, gehe ich mal davon aus, dass dort nicht standardmäßig mehrere Inserts gleichzeitig abgeschossen werden. Ich hatte mir die Vorgehensweise so vorgestellt, dass ich die Tabelle locke, einen neuen Beitrag einfüge, ggf. die nested-set-daten neu berechne und sie wieder unlocke. Kommt ausgerechnet während diesem Vorgang - was ich als sehr seltenen Fall ansehe - ein weiterer Schreibvorgang, lass ich den einfach mit sleep() ne Zehntel-Sekunde warten und schicke ihn dann erneut ab. Wie skuril wirkt dies auf euch?

4. Warum kein InnoDB? Ich hatte mal versehentlich auf ner lokalen Testinstallation InnoDB-Tabellen erstellt. Daraufhin lief diese Installation wirklich erheblich langsamer. Da ich nur ein Forum/CMS habe, halte ich die Vorgehensweise (siehe 3.) für einen guten Kompromiss.
Naja. Wäre nett, wenn mir jemand nen Tipp gibt und mir die Meinung sagt
