KILL [CONNECTION | QUERY] thread_id
Jede Verbindung mit mysqld wird in einem
separaten Thread ausgeführt. Mit der Anweisung SHOW
PROCESSLIST
können Sie die gerade ausgeführten
Threads auflisten. Die Terminierung eines Threads ist mit der
Anweisung KILL
möglich.
thread_id
KILL
unterstützt die optionalen
Modifizierer CONNECTION
oder
QUERY
:
KILL CONNECTION
entspricht
KILL
ohne Modifizierer: Es terminiert
die Verbindung zur angegebenen Kennung
thread_id
.
KILL QUERY
terminiert die über die
Verbindung aktuell ausgeführte Anweisung, lässt die
Verbindung selbst aber bestehen.
Wenn Sie die Berechtigung PROCESS
haben,
werden alle Threads angezeigt. Wenn Sie die Berechtigung
SUPER
haben, können Sie alle Threads und
Anweisungen terminieren. Andernfalls werden nur Ihre eigenen
Threads und Anweisungen angezeigt und zur Terminierung
freigegeben.
Zur Überprüfung und Terminierung von Threads können Sie auch die Befehle mysqladmin processlist und mysqladmin kill verwenden.
Hinweis: Sie können
KILL
nicht mit der Embedded MySQL
Server-Bibliothek verwenden, da der eingebettete Server nur in
den Threads der Hostanwendung ausgeführt wird – er selbst
erstellt also keine Verbindungs-Threads.
Wenn Sie KILL
verwenden, wird ein
Thread-spezifisches Terminierungs-Flag für den Thread
gesetzt. In den meisten Fällen kann es etwas dauern, bis die
Terminierung des Threads abgeschlossen ist, weil das Flag nur
in bestimmten Abständen überprüft wird:
Bei SELECT
-, ORDER
BY
- und GROUP BY
-Schleifen
wird das Flag nach dem Lesen eines Datensatzblocks
überprüft. Ist das Terminierungs-Flag gesetzt, dann wird
die Anweisung abgebrochen.
Bei ALTER TABLE
wird das
Terminierungs-Flag vor jedem Lesen eines Datensatzblocks
aus der Ursprungstabelle geprüft. Wurde das Flag gesetzt,
dann wird die Anweisung abgebrochen und die
Temporärtabelle gelöscht.
Bei UPDATE
- oder
DELETE
-Operationen wird das Flag nach
jedem gelesenen Block und nach jedem geänderten oder
gelöschten Datensatz überprüft. Ist das
Terminierungs-Flag gesetzt, dann wird die Anweisung
abgebrochen. Beachten Sie, dass, wenn Sie keine
Transaktionen verwenden, bereits erfolgte Änderungen
nicht rückgängig gemacht werden.
GET_LOCK()
führt einen Abbruch aus und
gibt NULL
zurück.
Ein INSERT DELAYED
-Thread
synchronisiert schnell alle Datensätze in seinem Speicher
(d. h., er schreibt sie) und wird dann terminiert.
Wenn der Thread sich im Tabellensperr-Handler befindet
(Zustand Locked
), dann wird die
Tabellensperre umgehend aufgehoben.
Wartet der Thread bei einem Schreibaufruf auf freien Festplattenspeicher, dann wird die Schreiboperation mit der Fehlermeldung „Disk Full“ abgebrochen.
Warnung: Die Terminierung
einer REPAIR TABLE
- oder
OPTIMIZE TABLE
-Operation führt bei
einer MyISAM
-Tabelle zu
Beschädigungen, die die Tabelle unbrauchbar machen. Lese-
oder Schreiboperationen in eine solche Tabelle schlagen
fehl, bis Sie sie – ohne Unterbrechung – wieder
optimieren oder reparieren.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.