Wie kann ich SQL-Abfragen auszuführen, die länger dauern 99,999 Sekunden auf MySQL Workbench?
UPDATE: das Problem ist nun behoben.
Möchte ich eine Abfrage ausführen, die mehr als 99,999 Sekunden ausgeführt werden (z.B. SELECT SLEEP(150000);
). Ändern Sie den timeout für die MySQL-Workbench, die wir zu gehen haben, um Bearbeiten → Einstellungen → SQL-Editor → DBMS-connection-read-Timeout (in Sekunden). Jedoch, die DBMS connection read time out
Feld nur akzeptieren bis zu 5 zahlen, und das Feld auf 0 ist äquivalent zu der default-parameter (600 Sekunden). Wenn die Abfrage mehr Zeit braucht, als das timeout, bekomme ich die Fehlermeldung: Error Code: 2013. Lost connection to MySQL server during query
Daher meine Frage: ist es möglich, um das limit zu erhöhen auf über 99,999 Sekunden?
Ich benutze Windows 7 64-bit Ultimate mit der MySQL Workbench 5.2.47 CE.
Den DBMS connection read time out
Feld:
Timeouts (0 entspricht der default-parameter (600 Sekunden)):
- Nein. Und ernst nehmen? Sie müssen manuell eine Abfrage ausführen, die mehr als 27 Stunden??? Vielleicht sollte man die Lage erneut bewerten...
- Sie sollte das wirklich nicht laufen Abfragen in der Produktion, die mehr als ein paar Minuten oder so. Wenn es gibt eine Menge von Daten, führen Sie es in kleinen Chargen.
- Danke! Ich brauche zu extrahieren einige Informationen aus einem 50-GB-Tabelle und legen Sie Sie in eine neue Tabelle. Während dieser Extraktion habe ich einige in-memory-joins zu ersetzen, text Attribute, die von den entsprechenden ID (Fremdschlüssel). Ich verstehe nicht, noch, warum diese Abfrage dauert mehr als 99,999 Sekunden, aber während ich es untersuchen einige
EXPLAIN
ich war neugierig zu erfahren, wenn es irgendeinen Weg gibt, um diese zu umgehen 99,999-Sekunden-limit in der MySQL-Workbench. In der Regel Einstellung des Parameters auf 0 bedeutet unendlich: ist es ein technisches Problem zu erklären, warum MySQL Workbench nicht zulassen? - Ich denke, ich kann sehen, wie die Optimierung Ihrer
SELECT SLEEP(150000)
- Anweisung. - @chiastic-Sicherheit 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich niemand jemals daran gedacht, Sie müssten einen so hohen timeout, so sind Sie begrenzt auf das, was ist einstellbar derzeit. Aber öffnen Sie eine feature-Anfrage auf http://bugs.mysql.com zu empfehlen entweder mit 0 deaktiviert die timeout-ganz oder ermöglichen größere Werte.
Gut, wir in Europa betrachten das Komma eines dezimal-Trennzeichen. Hast du eigentlich meine 100k von Sekunden? Ich sehe in Ihren Kommentaren, dass Sie mit 50 GB. Auch so, wenn Sie brauchen mehr als eine Stunde, verpasst die Indeces. Sie müssen wissen, dass Sie nicht erhalten richtig rebuildt in einer einzigen Abfrage, also wenn Sie sich auf einer massiven einfügen, erhalten Sie das kartesische Produkt der Zeilen, die gescannt werden - in anderen Worten, Ihre Abfrage könnte passieren, laufen für Wochen oder sogar Monate.
Lösung:
1) Füllen Sie die grundlegenden Daten, verwenden Sie keine Verknüpfungen hier. 2) Alter table set index. 3) starten Sie "ANALYZE" 4) alles andere.
Wenn yo das Gefühl, dass Sie haben Schwierigkeiten, sich dieser Prozedur stellen Sie Ihre Abfrage mit den EXPLAIN-Schlüsselwort und die Ergebnisse posten.
(Ich habe einen cronjob importieren über 80GB alle 30 Minuten in place - MySQL kann sicherlich damit umgehen.)
Dieses Problem ist jetzt gelöst in MySQL Workbench 6.0.3 (2013-07-09): Siehe die bug-report und die change-log.