9 Stimmen

Begrenzung der Sql-Ausführungszeit

Einige Sql sind nicht gut geschrieben. Manchmal kostet eine Suche in Anwendungen Stunden. Wenn eine Anwendung (z.B. eine Website) eine Abfrage stellt, die lange Zeit läuft, muss ich die Mysql neu starten. Wie kann ich die Ausführungszeit einer Sql-Abfrage in der Datenbank begrenzen?

8voto

Omesh Punkte 26519

Um eine Abfrage in MySQL nach einer langen Ausführungszeit automatisch zu beenden:

  1. Erstellen Sie eine gespeicherte Prozedur als:

    DECLARE CURSOR cur1 FOR SELECT ID 
                        FROM INFORMATION_SCHEMA.PROCESSLIST 
                        WHERE COMMAND = 'Query' AND TIME > 120;

    dann innerhalb der Schleife von curosr do:

    FETCH ID INTO @var_kill_id;
    KILL QUERY @var_kill_id;
  2. erstellen. EVENT FOR EVERY 5 SECONDS und einfach CALL die obige Prozedur darin.

Hinweis: KILL QUERY beendet nur die Abfrage und die MySQL-Verbindung wird nicht unterbrochen. siehe aquí .

2voto

Radu Maris Punkte 5428

Wenn möglich, können Sie auch Twitters mysql-Fork ausprobieren, der "max_statement_time" unterstützt und eine Abfrage, die diesen Wert überschreitet, mit einer Granularität von einer Millisekunde abbricht.

Véase http://engineering.twitter.com/2012/04/mysql-at-twitter.html y https://github.com/twitter/mysql/wiki/Statement-Timeout

Original Quelle .

0voto

NullPoiиteя Punkte 54880

Die einzige Möglichkeit ist, eine andere Sitzung zu öffnen, indem Sie PROZESSLISTE ANZEIGEN und dann TODESANFRAGE derjenige, den Sie kündigen möchten.

Sie können die mysqladmin Befehlszeilentool, um diese Befehle auszuführen.

0voto

jsist Punkte 5185

Dies ist vielleicht nicht die exakte Lösung für die Einschränkung der SQL-Ausführungszeit, aber ich denke, es wird Ihnen helfen. Sie müssen Ihren MySQL-Server nicht neu starten.

Versuchen Sie es mit einem MySQL GUI Tool wie SQLyog . Dort können Sie die Ausführung der Abfrage manuell stoppen (überprüfen Sie die X-Schaltfläche im Screenshot), wenn Sie der Meinung sind, dass sie zu lange dauert.

Außerdem können Sie den Abfrageprozess auch beenden, indem Sie auf die Prozessliste zugreifen. Überprüfen Sie die beiden anderen Bilder im Screenshot mit den Schritten zum Beenden von Prozessen...

Kill process screen shots

Ich hoffe, es hilft....

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X