Gibt es ein gutes Tool für MySQL, mit dem ich meine Abfragen und Indexeinstellungen optimieren kann?

8

Ich benutze MySQL auf einer relativ komplexen Website (PHP-gesteuert).

Idealerweise würde ich ein Tool verwenden, mit dem ich die SQL-Abfragen testen kann, die ich verwende, und bessere Tabellenindizes vorschlage, die die Leistung verbessern und Tabellenscans vermeiden.

Wenn das nicht funktioniert, dann weiß ich genau, was jede Abfrage vorhat, damit ich die Optimierung selbst durchführen kann.

Bearbeiten: Eine einfache Anleitung zum Verständnis der Ausgabe von EXPLAIN ... wäre ebenfalls nützlich.

Danke.

    
Rik Heywood 24.09.2008, 14:50
quelle

5 Antworten

18

Okay, bevor ich antworte, abonniert den MySQL Performance Blog , ich habe viel gelernt (und ich dachte, ich wüsste es bereits) viel über MySQL). Außerdem hat er eine bitchin 'Tools Seite hier .

Zweitens, hier sind einige Informationen über EXPLAIN (verwiesen auf das High Performance MySQL-Buch von O'Reilly):

Wenn Sie ein EXPLAIN für eine Abfrage ausführen, wird Ihnen alles, was MySQL über diese Abfrage weiß, in Form von Berichten für jede an der Abfrage beteiligte Tabelle mitgeteilt.

Jeder dieser Berichte wird Ihnen sagen ...

  • die ID der Tabelle (in der Abfrage)
  • die Rolle der Tabelle in einer größeren Auswahl (falls zutreffend, könnte man einfach sagen, wenn es nur eine Tabelle ist)
  • Der Name der Tabelle (duh)
  • der Join-Typ (falls vorhanden, standardmäßig const )
  • eine Liste von Indizes für die Tabelle (oder NULL, wenn keine vorhanden sind), possible_keys
  • Der Name des Index, den MySQL verwendet hat, Schlüssel
  • die Größe des Schlüsselwerts (in Byte)
  • ref zeigt die Spalten oder Werte, die für die Übereinstimmung mit dem Schlüssel
  • verwendet wurden
  • rows ist die Anzahl der Zeilen, die nach Ansicht von MySQL überprüft werden müssen, um die Abfrage zu erfüllen. Dies sollte so nahe wie möglich an Ihrem berechneten Minimum gehalten werden!
  • ... dann irgendwelche zusätzlichen Informationen, die MySQL vermitteln möchte

Das Buch ist absolut genial, wenn es um Informationen wie dieses geht. Wenn Sie es nicht schon getan haben, sollten Sie Ihren Chef dazu bringen, sich bei einem Kauf abzumelden.

Ansonsten hoffe ich, dass ein erfahrener SO-Benutzer helfen kann:)

    
Pete Karl II 26.09.2008, 18:34
quelle
4

Als eine einfache Sache aktivieren Sie Slow Query Log und sehen Sie, welche Abfragen langsam sind, und versuchen Sie dann, sie wie vorgeschlagen zu analysieren.

    
Michael Pliskin 24.09.2008 15:08
quelle
3

Es gibt wahrscheinlich Abfrageanalysatoren da draußen, aber für einen einfachen ersten Schnitt Verwenden Sie die mysql-Befehlszeile und geben Sie "explain select * from foo where bar = 'abc'" ein. Stellen Sie sicher, dass Ihre häufigsten Abfragen Indizes verwenden, versuchen Sie sequenzielle Scans oder Arten von großen Tabellen zu vermeiden.

    
Paul Tomblin 24.09.2008 14:52
quelle
1

Sie sollten sich das Maatkit ansehen, ein Open-Source-Toolkit für alle Arten von MySQL-Aufgaben. Ohne weitere Informationen über genau das, was Sie tunen möchten, ist es schwer, Ihnen zu sagen, welche Werkzeuge Sie verwenden würden und wie, aber die Dokumentation ist ausgezeichnet und deckt viele Anwendungen ab.

    
Jeremy DeGroot 24.09.2008 14:56
quelle
0

Das Tool, das ich für den Rest meines SQL-Tweaking verwende ( SQLyog ), hat eine neue Version, die einen Profiler enthält, was großartig ist! (Ich arbeite nicht für sie - ich benutze nur ihr Produkt)

Ссылка

    
Rik Heywood 10.03.2009 11:49
quelle

Tags und Links