dedlfix: Prozess blockiert Mysql

Beitrag lesen

echo $begrüßung;

Das wundert mich. Ich haette jetzt gedacht, daß alle Kommandos auf tabelleA bis zum commit zurückgehalten werden.

Es wäre sehr nett, wenn du bitte mal aufhörtest, mit deinem Wissen über andere DBMS auf MySQL zu schließen und dann die anderweitig erlangten Kenntnisse als Selbstverständlichkeit bei MySQL zu verkaufen. Das stiftet nur mehr Verwirrung als dass es hilft.

Transactions und damit ein "commit" gibt es in MySQL nur, wenn Tabellentypen wie InnoDB oder DBD verwendet werden. Standardmäßig wird jedoch der Typ MyISAM verwendet. Hat man einen Grund, einen anderen Tabellentyp zu wählen, z.B. weil man Transaktionen benötigt, dann gehört man im Allgemeinen zu den Fortgeschrittenen und sollte wissen, dass mit dem anderen Tabellentyp eine andere Storage-Engine verwendet wird, dass diese aus diversen Gründen (z.B. weil die Engine von einem anderen Hersteller entwickelt wurde und im Laufe der MySQL-Geschichte hinzugekauft wurde) ein deutlich anderes Verhalten an den Tag legt und andere Features zur Verfügung stellt, und dass dies von so wesentlicher Bedeutung ist, dass man das mit dazu sagen muss, wenn man ein Problem damit hat.

Aber wenn mySQL dieses Verhalten macht, vielleicht gibt es bei mySQL eine Art Trigger. Du kannst dann jeden Eintrag von tabelleB per Trigger nach tabelleA kopieren und brauchst dann den insert nicht. Wie wäre das ?

Siehe oben, erster Abschnitt. Trigger stehen erst ab Version 5.0 zur Verfügung. Version 5.0 wurde erst im Oktober 2005 als "Production Release" gekennzeichnet. Die Wahrscheinlichkeit, dass diese Version beim OP zum Einsatz kommt, schätze ich zum jetzigen Zeitpunkt noch nicht sehr hoch ein.

Sowohl als Fragender als auch als Antwortender ist es immer nützlich, die konkrete Version anzugeben, auf die man sich bezieht.

Zum Locking-Problem kann ich nichts sagen, da ich damit keine Erfahrung habe.
Ein anderer Tipp wäre jedoch, während des Inserts auf Indizes in tabelleA zu verzichten. Dann muss nicht jeder Datensatz einzeln in den Index eingearbeitet werden. Inwieweit dies einen Geschwindigkeitsvorteil bietet hängt sicherlich von der Tabellengröße und der Art und Anzahl der Indizes ab und sollte mit einer praxisnahen Messreihe getestet werden.

echo "$verabschiedung $name";