Teil 5: MySQL 4 - Einplanungsmodifikatoren und Locking

SQL-Optimierung: Manuelles Priorisieren und Sperren

DELAYED-Modifikator für INSERT

Der Modifikator DELAYED für INSERT verhält sich wie folgt: Wenn eine INSERT DELAYED-Anforderung für eine Tabelle empfangen wird, stellt der Server die Zeilen in eine Warteschlange und gibt unmittelbar einen Status an den Client zurück, sodass dieser weiterarbeiten kann, noch bevor die Zeilen eingefügt wurden. Solange Leser lesen, werden die Zeilen in der Warteschlange gehalten. Sind keine weiteren Leser vorhanden, beginnt der Server, die Zeilen aus der Warteschlange in die Tabelle einzufügen.

Hin und wieder unterbricht der Server seine Arbeit, um zu prüfen, ob neue Anforderungen eingetroffen sind und wartet. Ist dies der Fall, dann wird die Arbeit mit der Warteschlange unterbrochen, und die Leser können ihre Arbeit fortsetzen. Stehen keine weiteren Leser an, dann werden wieder verzögerte Zeilen eingetragen. Dieser Prozess wird so lange fortgesetzt, bis die Warteschlange leer ist.

LOW_PRIORITY und DELAYED ähneln sich dahingehend, dass beide eine Verschiebung von Zeileneinfügungen ermöglichen, unterscheiden sich allerdings bezüglich ihrer Auswirkungen auf die Clients beträchtlich. LOW_PRIORITY zwingt den Client zu warten, bis die Zeilen eingefügt werden können, während DELAYED es ihm gestattet fortzufahren, während der Server die Zeilen puffert, bis er genug Zeit zur Verarbeitung hat.