Eine oft ungenutzte, aber ausführlichere
VOLLSTÄNDIGE PROZESSLISTE ANZEIGEN
ist praktisch, aber nicht so gut wie der fantastische Query Analyzer für Nicht-Unternehmen - aktivieren Sie es so
mysql> set profiling = 1;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
Diese beiden sind Junk-Abfragen, um die Profiltabelle zu füllen,
mysql> wähle * aus _test.customers;
FEHLER 1146 (42S02): Tabelle '_test.customers' existiert nicht
mysql> wähle * aus test.customers limit 0;
Leerer Satz (0,00 Sek.)
Rufen Sie eine Liste aller Abfragen mit Profil und ihrer Dauer ab
mysql> show profiles;
+ ---------- + ------------ + ------------------------- ------ +
| Query_ID | Dauer | Abfrage |
+ ---------- + ------------ + ------------------------- ------ +
| 1 | 0,00013400 | Wählen Sie * aus _test.customers |
| 2 | 0,01546500 | Wählen Sie * aus test.customers |
+ ---------- + ------------ + ------------------------- ------ +
Anzeigeinfo für die letzte Abfrage wäre nur "Profil anzeigen" - oder Sie können eine Abfrage angeben
mysql> zeige Profil für Abfrage 2;
+ ---------------------- + ---------- +
| Status | Dauer |
+ ---------------------- + ---------- +
| starten | 0,000053 |
| Berechtigungen prüfen | 0,000007 |
| Tische öffnen | 0,000014 |
| Systemsperre | 0,000006 |
| Tischschloss | 0,000008 |
| init | 0,000065 |
| optimieren | 0,000003 |
| ausführen | 0.000201 |
| ende | 0,000003 |
| Abfrageende | 0,000002 |
| Gegenstände befreien 0,000020 |
| langsame Abfrage protokollieren | 0,000002 |
| aufräumen 0,000004 |
+ ---------------------- + ---------- +
13 Zeilen im Satz (0,00 Sek.)
Sie können auch spezifische Informationen wie CPU, BLOCK IO und SWAPS anfordern ( alles auf der Manpage ).
mysql> show profile cpu for query 2;
+ ---------------------- + ---------- + ---------- + ---- -------- +
| Status | Dauer | CPU_user | CPU_system |
+ ---------------------- + ---------- + ---------- + ---- -------- +
| starten | 0,000056 | 0,001000 | 0,000000 |
| Berechtigungen prüfen | 0,000007 | 0,000000 | 0,000000 |
| Tische öffnen | 0,000010 | 0,000000 | 0,000000 |
| Systemsperre | 0,000005 | 0,000000 | 0,000000 |
| Tischschloss | 0,000007 | 0,000000 | 0,000000 |
| init | 0,000059 | 0,000000 | 0,000000 |
| optimieren | 0,000003 | 0,000000 | 0,000000 |
| Statistiken | 0,015022 | 0,000000 | 0,000000 |
| vorbereiten 0,000014 | 0,001000 | 0,000000 |
| ausführen | 0,000004 | 0,000000 | 0,000000 |
| Daten senden | 0,000245 | 0,000000 | 0,000000 |
| ende | 0,000004 | 0,000000 | 0,000000 |
| Abfrageende | 0,000002 | 0,000000 | 0,000000 |
| Gegenstände befreien 0,000021 | 0,000000 | 0,000000 |
| langsame Abfrage protokollieren | 0,000002 | 0,000000 | 0,000000 |
| aufräumen 0,000004 | 0,000000 | 0,000000 |
+ ---------------------- + ---------- + ---------- + ---- -------- +
16 Zeilen im Satz (0,00 Sek.)
Vergessen Sie nicht, es anschließend zu deaktivieren, da die Protokollierung zusätzlichen Aufwand verursacht.
mysql> set profiling = 0;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
Einige MySQL-Befehle , die nicht immer allgemein bekannt sind oder in Erinnerung bleiben.
Ändern Sie die Ausrichtung der Ergebnismenge in vertikal, um das Lesen und Einfügen zu erleichtern.
Brechen Sie die Abfrage ab, die Sie gerade eingeben, während Sie sie in Ihrem Verlauf belassen.
Bearbeiten Sie eine Abfrage bzw. die letzte Abfrage mit Ihrem bevorzugten $ EDITOR.
Löschen Sie die Ausgabe der Konsole.
Vergleichen Sie die Ergebnismengen mit MD5-Hash.
Ändern Sie Ihre Eingabeaufforderung.
Durchsuchen Sie Ihren Befehlsverlauf nach einer bestimmten Zeichenfolge (z. B. Bash).
Beginnen Sie mit der Eingabe eines Suchbegriffs und wiederholen Sie ^ R, um durch die Ergebnisse zu blättern.
quelle
md5sum -
Idee, als Pager zu verwenden. Nicht wirklich mysql-spezifisch duVon mir erlernte Tricks, die für einige von Nutzen sein können:
So führen Sie die zuvor gespeicherte Datei aus:
Verwenden "\!" um auf Shell-Befehle zuzugreifen. Beispielsweise:
Wenn Sie also Ihre Anweisung in eine Datei schreiben möchten (ohne die Editor-Option zu verwenden), können Sie Folgendes eingeben:
Wenn Sie eintreten
Anschließend werden Ihre Anweisungen und Abfrageergebnisse an den von Ihnen angegebenen Dateinamen weitergeleitet / gedruckt. Verwenden Sie
\\t
diese auszuschalten.Beenden Sie eine Abfrage mit
\\G
einem ";" um die Ausgabe in einem Zeilenformat statt in Spalten anzuzeigen.Schließen Sie die Verwendung einer Where ... LIKE-Klausel mit der SHOW-Anweisung nicht aus. Beispielsweise:
Um den Speicherort Ihres MySQL-Datenverzeichnisses zu ermitteln, ohne auf die
my.cnf
Datei zu achten, gehen Sie wie folgt vor :quelle
Ich persönlich mag den
SHOW
BefehlSie können Folgendes tun:
SHOW PROCESSLIST
- Alle laufenden Verbindungen zuSHOW CREATE TABLE TableName
mysql anzeigen. - Den zum Erstellen der TabelleSHOW CREATE PROCEDURE ProcedureName
verwendeten SQL-Code anzeigen. - Den zum Erstellen des SP verwendeten SQL-Code anzeigen.SHOW VARIABLES
- Alle Systemvariablen anzeigenDie vollständige Liste finden Sie hier
quelle
Eigentlich dokumentiert , aber sehr ärgerlich: Automatische Datumskonvertierungen für falsche Daten.
Manchmal haben Sie "Glück", wenn MySQL die Eingabe nicht an nahegelegene gültige Daten anpasst, sondern sie als
0000-00-00
ungültig speichert . Selbst dann hätten Sie vielleicht gewollt, dass MySQL fehlschlägt, anstatt diesen Wert stillschweigend für Sie zu speichern.quelle
Ein weiteres Merkmal, das MySQL von anderen Datenbanken unterscheidet, ist der
REPLACE INTO
Befehl. Du kannst tun:Sie können die Ersetzungsanweisung auch so schreiben, wie Sie die Aktualisierungsanweisung schreiben:
quelle
Nicht wirklich ein verstecktes Feature, aber es ist weniger bekannt und ich benutze es oft, um eine Abfrage zu speichern, um zu überprüfen, ob etwas existiert, bevor ich ein UPDATE oder INSERT mache
Dokumentation ist hier
quelle
Verwenden Sie zum Anzeigen des Abfrageausführungsplans
EXPLAIN
z.B
quelle
Nicht wirklich versteckt, aber Slow-Query-Log kann sehr hilfreich sein, um Leistungsprobleme in Spitzenzeiten aufzuspüren.
In der Datei
my.cnf
, Abschnitt [mysqld] - fügen Sie hinzu:quelle
Nun, ich kann dies nicht als Duplikat markieren, da es sich um eine andere Site handelt (und ich habe hier keinen Repräsentanten), aber ich verlinke einfach zu diesem hervorragenden Stackoverflow-Beitrag für dieselbe Frage :
quelle
Nur als Ergänzung zur Antwort von pQD (als Anfänger kann ich noch keinen Kommentar hinzufügen), wenn Sie den Pfad zum langsamen Abfrageprotokoll in der richtigen my.cnf-Datei noch nicht hinzugefügt haben, wird das Fehlerprotokoll angezeigt In das Datenverzeichnis geschrieben (verwenden Sie SHOW VARIABLES LIKE 'datadir', um herauszufinden, wo sich dies befindet). Der Dateiname hat das Format [Systemname] -slow.log
quelle