dedlfix: MySQL (MyISAM): Lock bei read+write

Beitrag lesen

Hi!

leider kommt es bei umfangreichen (minutenlangen) Anfragen meiner Cronjobs zum Generieren von Reportings vor, dass einzelne Queries (sowohl Select, als auch Update) gelockt werden.
Es sieht so aus, als würde das passieren, wenn zeitgleich auf den selben Datensatz ein Update und Select ausgeführt wird.

Du meinst jetzt nicht den Zustand: "Currently, you cannot update a table and select from the same table in a subquery"? Das trifft auf UPDATE mit eingebautem Subquery zu und würde mit einem Fehler geahndet werden, den du bei ordentlicher Fehlerbehandlung sehen und keine Vermutungen anstellen müsstest. Ich gehe also davon aus, dass parallel laufende Programme dein Problem verursachen.

Stimmt das und wenn ja: Wie kann ich MySQL dazu bewegen, im Problemfall die Anfragen hintereinander auszuführen statt parallel?

Man sollte annehmen, dass das stimmt, was im Handbuch steht. Zunächst gilt es, das Problem zu verstehen, bevor man dafür eine Lösung sucht. Wie MySQL mit Sperren umgeht, steht im Kapitel Optimizing Locking Operations, vermutlich auch Tipps, wie man da was verbessern kann.

Die Tabellen zu kopieren und dann mit der Kopie weiterzuarbeiten, um die Originale und Update-Anfragen nicht durch Select zu stören, ist doch eine "überholte" Methode oder ist das wirklich nötig?!

Das klingt wieder nach Update mit Subquery. Dann hilft nur eine temporäre Tabelle.

Lo!