MySQL-Kill-Befehl – ​​Verwendungshandbuch

MySQL-Kill-Befehl – ​​Verwendungshandbuch
KILL [VERBINDUNG | ABFRAGE] Prozesslisten-ID

In MySQL wird jede Verbindung als separater Thread ausgeführt. Mit der Anweisung KILL processlist_id können Sie die Ausführung der Anweisung beenden.

KILL erlaubt optionale CONNECTION- oder QUERY-Modifikatoren:

  • KILL CONNECTION KILL ist dasselbe wie kein Modifikator: Beenden Sie die mit der angegebenen Prozesslisten-ID verknüpfte Verbindung, nachdem alle von dieser Verbindung ausgeführten Anweisungen beendet wurden.
  • KILL QUERY beendet die aktuell auf der Verbindung ausgeführte Anweisung, lässt die Verbindung selbst jedoch intakt.

Verwenden Sie „show processlist“, um alle IDs anzuzeigen

Verwendung des Kill-Befehls

Wenn unsere Anwendung SQL ausführt und die Ausführung von SQL aufgrund einer Sperrauswahl für die Aktualisierung oder einer zu großen Zahl in der Datenbank hängen bleibt, was sollen wir tun, wenn wir SQL abbrechen möchten? Wir können den Befehl kill verwenden, um den MySQL-Thread zu stoppen oder die SQL-Ausführung abzubrechen. Sollten wir den Befehl kill threadId oder den Befehl kill query theadId ausführen?

Der größte Unterschied zwischen Kill und Kill Query besteht darin, ob alle auf der Verbindung ausgeführten SQLs abgebrochen werden sollen, also ob der Thread geschlossen werden soll. Wenn der Thread geschlossen wird, entspricht dies dem Schließen der Anweisung in JDBC.

-- Die Datenbank sperrt den Datensatz mit acctno=13 und führt die folgende Update-Anweisung aus: update test set acctname ='12' where acctno=13

Zeigen Sie die Prozessliste an, um die Thread-ID anzuzeigen, die SQL ausführt.

Wenn Sie die SQL-Ausführung abbrechen möchten, können Sie den Befehl kill query 407 verwenden, um die SQL-Ausführung abzubrechen. Nach der Ausführung verschwindet der 407-Thread nicht. Wenn die Verbindung eine SQL-Ausführung durchführt, wird sie weiterhin ausgeführt; wenn Sie jedoch kill 407 verwenden, verschwindet der 407-Thread. Bitte beachten Sie bei der Verwendung den Unterschied zwischen beiden.

Zusätzlich zur Anzeige der Thread-ID über die Anzeige der Prozessliste können Sie auch programmgesteuerte Methoden verwenden, um die Thread-ID abzurufen.

 Verbindung Verbindung = getConnection();
 ((MysqlConnection)Verbindung).getSession().getThreadId();

Anweisungsabbruchmethode

Wenn wir die Datenbank mit JDBC-Programmierung betreiben, können wir zum Abbrechen auch die Cancel-Methode des Statement-Objekts verwenden. Der MySQL-Treiber sendet auch intern die Kill-Query-ThreadId-Anweisung. Der Quellcode der Cancel-Methode des MySQL-Treibers

 öffentliche void cancel() wirft SQLException {
    versuchen {
      wenn (this.query.getStatementExecuting().get()) {
        wenn (!this.isClosed && this.connection != null) {
          JdbcConnection cancelConn = null;
          Objekt cancelStmt = null;

          versuchen {
            HostInfo hostInfo = this.session.getHostInfo();
            Zeichenfolge Datenbank = hostInfo.getDatabase();
            String-Benutzer = StringUtils.isNullOrEmpty(hostInfo.getUser()) ? "" : hostInfo.getUser();
            String-Passwort = StringUtils.isNullOrEmpty(hostInfo.getPassword()) ? "" : hostInfo.getPassword();
            NativeSession neueSession = neue NativeSession(this.session.getHostInfo(), this.session.getPropertySet());
            newSession.connect(hostInfo, Benutzer, Passwort, Datenbank, 30000, neuer TransactionEventHandler() {
              public void Transaktion abgeschlossen () {
              }

              public void TransaktionBeginnen() {
              }
            });
            //Der Treiber verwendet den Befehl KILL QUERY + threadId, um newSession.sendCommand((new NativeMessageBuilder()).buildComQuery(newSession.getSharedSendPacket(), "KILL QUERY " + this.session.getThreadId()), false, 0); abzubrechen.
            dies.setCancelStatus(CancelStatus.CANCELED_BY_USER);
          } Fang (IOException var13) {
            wirf SQLExceptionsMapping.translateException(var13, this.exceptionInterceptor);
          Endlich
            if (cancelStmt != null) {
              ((Anweisung)cancelStmt).close();
            }

            wenn (cancelConn != null) {
              ((JdbcConnection)cancelConn).schließen();
            }

          }
        }

      }
    } Fang (CJException var15) {
      wirf SQLExceptionsMapping.translateException(var15, this.getExceptionInterceptor());
    }
  }

Ausführung des Clienttools

Das Client-Tool bricht die Ausführung nach der Ausführung von SQL ab. Einige Tools senden Kill-Befehle und andere senden Kill-Abfrageanweisungen. Sie können das Paketerfassungstool verwenden, um zu überprüfen, welche Anweisungen das Navicat-Tool sendet. Das empfohlene Paketerfassungstool ist Wireshark, das sehr leistungsstark ist.

Es handelt sich um einen Kill-Befehl und die entsprechende Thread-ID ist 407. Einige Tools senden auch einen Kill-Query-Befehl.

Oben finden Sie den detaillierten Inhalt der Gebrauchsanweisung für den MySQL-Kill-Befehl. Weitere Informationen zum MySQL-Kill-Befehl finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Ausführungsprinzips des MySQL-Kill-Befehls
  • Lösung für das versehentliche Löschen von Daten in MySQL und Kill-Anweisungsprinzip
  • Mysql verwendet den Kill-Befehl, um das Deadlock-Problem zu lösen (eine bestimmte SQL-Anweisung, die ausgeführt wird, abzubrechen).
  • Lösung für MySQL Slave, der Oom-Killer auslöst
  • MySQL OOM-Serie 3: Befreien Sie sich vom Pech, dass MySQL abgeschafft wurde
  • MySQL OOM System 2 OOM-Killer
  • pt-kill-Methode des Percona-Toolkits zum Beenden von MySQL-Abfragen oder -Verbindungen
  • Batch-Kill-SQLs, die für eine lange Zeit in MySQL ausgeführt werden
  • Gründe, warum MySQL Kill Threads nicht beenden kann

<<:  Erste Schritte: Eine kurze Einführung in die grundlegenden Tags und Attribute von HTML

>>:  Detaillierte Erläuterung der Überwachung des Jenkins-Prozesses basierend auf Zabbix

Artikel empfehlen

Diagramm der Installationszusammenfassung für MySQL 8.0.11

Installationsumgebung: CAT /etc/os-release Zeigt ...

So aktivieren Sie das langsame Abfrageprotokoll in MySQL

1.1 Einleitung Durch Aktivieren des Slow Query Lo...

So installieren Sie OpenJDK in Docker und führen das JAR-Paket aus

Bild herunterladen Docker-Pull OpenJDK Erstellen ...

Hinweise zu Linux-Systembefehlen

Dieser Artikel beschreibt die Linux-Systembefehle...

JS-Implementierung des Apple-Rechners

In diesem Artikelbeispiel wird der spezifische JS...

JavaScript-Entwurfsmuster – Muster der Verantwortungskette

Inhaltsverzeichnis Überblick Code-Implementierung...

So installieren Sie Grafana und fügen Influxdb-Überwachung unter Linux hinzu

Installieren Sie Grafana. Die offizielle Website ...

Tutorial zum Erstellen eines CA-Zertifikats unter Linux Centos8

Installieren der erforderlichen Dateien Yum insta...

js native Wasserfall-Flow-Plugin-Produktion

In diesem Artikel wird der spezifische Code des n...

Analysieren Sie die Dauer von TIME_WAIT aus dem Linux-Quellcode

Inhaltsverzeichnis 1. Einleitung 2. Lassen Sie un...