Aktueller Standort: Startseite> Neueste Artikel> Übergang von MySQLI :: Debugug zu leistungsfähigeren Debugging -Tools (wie XDEBUG + MySQL Slow Query Log)

Übergang von MySQLI :: Debugug zu leistungsfähigeren Debugging -Tools (wie XDEBUG + MySQL Slow Query Log)

M66 2025-05-31

In der täglichen PHP -Entwicklung wird MySQLi :: Debug in der Regel verwendet, um den Datenbankverbindungsprozess und die Ausführungsdetails einfach anzuzeigen. Es mag in der frühen Phase des Debuggens ausreichen, aber wenn das Projekt allmählich komplizierter wird, kann es ausschließlich auf MySQLI :: Debuggen angewiesen sind, die die detaillierten Analysebedürfnisse von Leistung Engpässen oder komplexen Fragen oft nicht erfüllen können. Daher führt Sie in diesem Artikel einen reibungslosen Übergang von MySQLI :: Debugg zu einem leistungsstärkeren Debugging -Tool - Xdebug und MySQL Slow Query -Protokolle, wodurch die Datenbank -Debugging -Effizienz systematisch verbessert wird.

1. Warum ist MySQLI :: Debugg nicht genug?

Die Funktion von MySQLI :: Debug () ist relativ einfach. Es ermöglicht nur die Ausgabe von Debug-Informationen auf der Ebene der MySQL-Client-Bibliothek, mit der Informationen wie Verbindungen und Ausführung auf niedrige Ebene aufgezeichnet werden, jedoch:

  • SQL Ausführungszeit wird nicht bereitgestellt .

  • Nicht einfach der Geschäftslogik zu entsprechen ;

  • Der Ausgangsinhalt ist chaotisch und schwer zu analysieren .

  • Der Anrufstack oder die Speicherverwendung kann nicht automatisch verfolgt werden .

Beispielcode:

 mysqli::debug("d:t:o,/tmp/client.trace");
$db = new mysqli("localhost", "user", "password", "dbname");

Obwohl es an /tmp/client.trace ausgegeben werden kann, sind Lesen und Analysen ineffizient.

2. XDEBUG: Debugging + Leistungsanalyse auf Code-Ebene

XDEBUG ist eine der leistungsstärksten Debugging -Erweiterungen von PHP, die erweiterte Funktionen wie Breakpoint -Debugging, Funktionsanrufverfolgung und Leistungsanalyse implementieren können.

Installieren Sie XDEBUG (als Beispiel PHP 8):

 pecl install xdebug

Fügen Sie dann php.ini hinzu:

 zend_extension=xdebug
xdebug.mode=develop,trace,profile
xdebug.output_dir=/tmp

Profilerstellung

Nach dem Einschalten von xDebug.mode = Profil generiert jede Anforderung eine .cachegrind -Datei. Sie können Tools wie QCACHEGRIND oder WebGrind verwenden, um die Ausführungszeit der Analysefunktion zu öffnen, einschließlich Datenbankabfragefunktionen.

 $mysqli = new mysqli("localhost", "user", "password", "dbname");
$result = $mysqli->query("SELECT * FROM users WHERE email LIKE '%@m66.net'");

Sie können deutlich die zeitaufwändigen, aufgerufenen Standort und andere Informationen von Query () sehen, die sehr geeignet sind, um langsame Abfragen zu beheben, die häufig ausgeführt werden.

3.. MySQL Slow Query Log: Fokus auf die SQL -Ausführungseffizienz

Das MySQL Slow Query -Protokoll ist eine natives Datenbankfunktion, die SQL -Anweisungen aufzeichnet, deren Ausführungszeit einen bestimmten Schwellenwert überschreitet, der ideal für die Analyse von Datenbank -Engpässen ist.

Aktivieren Sie langsame Abfrageprotokolle (my.cnf Beispiel):

 [mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1

Starten Sie nach dem Einrichten den MySQL -Service neu:

 sudo systemctl restart mysql

Empfohlene Analysetools:

  • Mysqldumpslow : Zeigen Sie schnell die langsame Abfrageverteilung in der Befehlszeile an.

  • Pt-Quer-Digest : Erweiterte analytische Tools, die von Percona Toolkit bereitgestellt werden;

  • Web-Tools : Sie können auch Protokolle auf https://m66.net/analyze-log (z. B. die Tool-Seite, die Sie selbst erstellt haben) zur visuellen Analyse hochladen.

4. Best Practices für die kombinierte Verwendung

  1. Entwicklungsstufe : Verwenden Sie XDebug, um Anrufbeziehungen und Datenbankanrufe anzuzeigen.

  2. Testphase : Einschalten des XDEBUG -Profilierungsmodus für die Leistungsabtastung;

  3. Produktionsstufe : Schalten Sie MySQL langsame Abfrageprotokolle und periodische Analyse ein;