it-swarm.com.de

Ausführungszeit der Abfrage in MySQL

Ich habe die Abfrage in MySQL ausgeführt, die aus ungefähr 33 Millionen Datensätzen besteht, wenn ich die Abfrage ausgeführt habe

  • wählen Sie die Bevölkerung1 <200000 aus der Stadt aus. es zeigt sich nach der Ausführung so

34459393 Zeilen im Satz (16,04 Sek.)

Meine Frage ist, was 16,04 Sekunden ist, weil es in der normalen Zeit mehr als 30 Minuten gedauert hat, aber es zeigt 16,04 Sekunden. Wie kann ich die tatsächliche Zeit berechnen?.

5
user41498

Die 16,04 Sekunden sind ein Timer auf dem Client, der die Zeit misst, die zwischen dem Aufruf und der Ausführung der Abfrage vergangen ist (wenn Sie genauer sein möchten, die Wanduhrzeit zwischen dem Aufruf start_timer () und mysql_end_timer () , etwas, das zu lustigen Ergebnissen führen kann, wie dieses habe ich ).

Der Grund, warum Sie glauben, dass die Ausführung mehr als 30 Minuten gedauert hat, liegt wahrscheinlich darin, dass die Ausgabe an den Standard nicht berücksichtigt wird. Sie können überprüfen, ob es wirklich 16 Sekunden dauert, indem Sie Folgendes tun:

mysql> pager cat > /dev/null 
mysql> <your query here>
mysql> nopager

Wenn Sie messen möchten, wie viel Zeit zum Schreiben in die Standardausgabe benötigt wird, haben Sie folgende Möglichkeiten:

$ time mysql -u <your user> -p<your password> <your database> \
  -e "select population1 < 200000 from city"

Hinweis : Möchten Sie wirklich eine 0 oder eine 1 für [~ # ~] alle [~ # ~] drucken Zeilen aus dieser Tabelle? Vielleicht die Option --safe-updates und/oder die Verwendung einer GUI kann Ihnen bei Ihren Fragen etwas helfen?

4
jynus

Wenn Sie eine Abfrage in MySQL Workbench ausführen, erhalten Sie tatsächlich zweimal im Aktionsausgabefenster. Die Überschrift zeigt auch, wofür sie sind:

enter image description here

Es gibt die Ausführungszeit auf dem Server (wahrscheinlich Ihre ~ 16) und die normalerweise viel größere Abrufzeit, um die Daten vom Server zum Client zu transportieren. Mit Millionen von Datensätzen, die leicht Minuten oder länger dauern können.

0
Mike Lischke