Wie kann ich mysql Zeit, die Zeit und / oder das Laden einer SQL Abfrage in PHP messen?

7

Ich muss herausfinden, wie lange meine Abfragen dauern und wie viel ich auf dem Server laste.

Ich bezweifle, dass es möglich ist, aber ich möchte auch die CPU-Nutzung nutzen.

Irgendwelche Ideen?

    
Jules 15.11.2010, 09:10
quelle

7 Antworten

20

PHP Syntax

%Vor%

Berechnen Sie dann den Unterschied zwischen $ starttime und $ endtime.

    
Poonam Bhatt 15.11.2010, 09:17
quelle
6

Sehen Sie sich den Abfrageprofiler an. Dies kann das Abfrage-Zeit-Bit von dem, was Sie brauchen, tun.

Ссылка

Ссылка

Es gibt verschiedene Tools, um die Last auf dem Server zu sehen

    
Jaydee 15.11.2010 09:14
quelle
2

Ist fast unmöglich, wenn Ihre Datenbank und Ihr Webserver anders angeordnet sind Außerdem versuchen Sie es mit PHP

zu erreichen

die Einschränkung

  • Sie müssen Zugriff auf beide Server haben (zB ssh)
  • Wenn Sie die Überprüfung der CPU-Last, z. B. exec_shell ssh, in die Datenbank einbetten und uptime bei jeder Ausführung der Abfrage zurückgeben, ist overkill

Problemumgehung

Betten Sie einen Cronjob in Ihren Datenbankserver ein In regelmäßigen Abständen gesendete E-Mails, wenn die Serverlast zu hoch wurde

Oder

in der Datenbank,
sendet in regelmäßigen Abständen E-Mails zu aktuellen laufenden Abfragen mit Hilfe von show full processlist

Beispiel zum Speichern von SHOW FULL PROCESSLIST

%Vor%

Das obige sollte ausreichen, um die aktuelle mysql-Prozessliste in eine Datei zu schreiben.
In der Linux-Box gibt es viele Befehle, mit denen der Benutzer die CPU-Auslastung anzeigen kann.
Aber ist Windows, ich denke, Sie können mit einer Suche auf Google von SO herausfinden.

    
ajreal 18.11.2010 17:07
quelle
0

Es gibt ziemlich viele Informationen, die Sie über die Datenbank mit

erhalten können %Vor%

Abfrage.

Ich würde annehmen, Last_query_cost Variable könnte sehr nützlich für Ihre Zwecke der Messungen sein. Sowie Slow_queries, die die Menge an Quires anzeigen, die länger als eine gewisse Zeit lief. Die vollständige Liste dieser Variablen finden Sie Ссылка Es gibt auch eine PHP-Funktion mysql_stat () PHP-Funktion, die einige Daten zur Datenbanknutzung zurückgibt. Zum Beispiel könnten Abfragen pro Sekunde nützlich sein. Um bestimmte Daten zu erfassen, benötigen Sie jedoch einen SSH-Zugriff auf die Datenbank.

    
Ivan 20.11.2010 15:43
quelle
0

Verwenden Sie microtime , um die für eine Abfrage erforderliche Zeit zu messen.

Zum Laden des Servers siehe Ссылка . Die CPU-Nutzung ist meistens irrelevant, da mysql die meiste Zeit über die Festplatte gebunden ist.

    
Quamis 24.11.2010 09:27
quelle
0

Für detailliertere Statistiken sollten Sie mysqli :: get_connection_stats verwenden (wenn Sie php 5.3 + verwenden)

Ссылка

    
ts. 24.11.2010 16:31
quelle
0

PHP kann wirklich nur die mysql_query() Ausführungszeit, die den gesamten Umlauf, die Latenz und die Übertragungszeiten einschließt, zeitlich festlegen. Um einen Breakdown zu haben, müssen Sie den MySQL Profiler wie bereits erwähnt verwenden. Der folgende Code sollte die Informationen ausgeben, die Sie benötigen. Wenn Sie das Profiling in Ihren PHP-Prozess integrieren möchten, müssen Sie den Profiler verwenden und relevante Felder aus der Tabelle information_schema.profiling auswählen, aber wenn es nur um die Leistung zu überprüfen, sollte das Folgende ausreichen.

%Vor%

Sobald Sie mit der Leistung zufrieden sind, entfernen Sie alle außer der gewünschten MySQL-Abfrage.

    
Ghostpsalm 25.11.2010 01:08
quelle

Tags und Links