Kapitel 7: MySQL-Sprachreferenz 445
• Wenn mehr als delayed_queue_size Zeilen bereits in einer bestimmten Handler-
Warteschlange anh¨angig sind, wartet der Thread, der nach INSERT DELAYED anfragt,
bis es wieder Platz in der Warteschlange gibt. Damit wird sichergestellt, dass der
mysqld-Server nicht den gesamten Arbeitsspeicher f¨ur die DELAYED-Warteschlange
verbraucht.
• Der Handler-Thread zeigt sich in der MySQL-Prozessliste mit delayed_insert in der
Command-Spalte. Er wird gekillt, wenn Sie einen FLUSH TABLES-Befehl ausf¨uhren oder
ihn mit KILL Thread_id killen. Er wird jedoch zuerst alle Zeilen in der Warteschlange
in die Tabelle schreiben, bevor er sich beendet. W¨ahrend dieser Zeit akzeptiert er keine
neuen INSERT-Befehle von anderen Threads mehr. Wenn Sie danach einen INSERT
DELAYED-Befehl ausf¨uhren, wird ein neuer Handler-Thread erzeugt.
• Beachten Sie, dass oben Gesagtes bedeutet, dass INSERT DELAYED-Befehle h¨ohere
Priorit¨at haben als normale INSERT-Befehle, wenn es einen INSERT DELAYED-Handler
gibt, der bereits l¨auft! Andere Aktualisierungsbefehle m¨ussen warten, bis die
INSERT DELAYED-Warteschlange leer ist, jemand den Handler-Thread killt (mit KILL
Thread_id) oder jemand FLUSH TABLES ausf¨uhrt.
• Die folgenden Status-Variablen stellen Informationen ¨uber INSERT DELAYED-Befehle
bereits:
Variable Bedeutung
Delayed_insert_thread Nummer des Handler-Threads
Delayed_writes Anzahl der Zeilen, die mit INSERT DELAYED geschrieben
wurden
Not_flushed_delayed_rows Anzahl der Zeilen, die darauf warten, geschrieben zu
werden
Sie k¨onnen diese Variablen betrachten, wenn Sie ein SHOW STATUS-Statement oder einen
mysqladmin extended-status-Befehl ausf¨uhren.
Beachten Sie, dass INSERT DELAYED langsamer ist als ein normales INSERT, wenn die
Tabelle nicht in Benutzung ist. Ausserdem gibt es einen zus¨atzlichen Overhead f¨ur den
Server, um einen separaten Thread f¨ur jede Tabelle zu handhaben, f¨ur die Sie INSERT
DELAYED benutzen. Das heißt, Sie sollten INSERT DELAYED nur benutzen, wenn Sie es wirk-
lich ben¨otigen!
7.4.5 UPDATE-Syntax
UPDATE [LOW_PRIORITY] [IGNORE] tabelle
SET spalten_name1=ausdruck1, [spalten_name2=ausdruck2, ...]
[WHERE where_definition]
[LIMIT #]
UPDATE aktualisiert Spalten in bestehenden Tabellenzeilen mit neuen Werten. Die SET-
Klausel gibt an, welche Spalten ge¨andert werden sollen und welche Werte ihnen zugewiesen
werden. Die WHERE-Klausel legt - falls angegeben - fest, welche Zeilen aktualisiert werden
sollen. Ansonsten werden alle Zeile aktualisiert. Wenn die ORDER BY-Klausel angegeben ist,
werden die Zeilen in der angegebenen Reihenfolge aktualisiert.
Wenn Sie das Schl¨usselwort LOW_PRIORITY angeb en, wird die Ausf¨uhrung von UPDATE
verz¨ogert, bis keine anderen Clients mehr aus der Tabelle lesen.
Kommentare zu diesen Handbüchern