Die folgenden Funktionsdemonstrationen basieren alle auf MySQL Version 5.6.36: Bei meiner Arbeit stoße ich häufig auf dieses Problem: Der MySQL-Datenzugriff verbraucht viel Energie und ich möchte ihn aus SQL-Sicht optimieren. F&E-Mitarbeiter fragen oft, ob sie sehen können, welche SQL-Anweisungen am häufigsten ausgeführt werden. Antwort: Nein, Sie können nur das aktuell laufende SQL und das im Slow-Log aufgezeichnete SQL sehen. Aus Performancegründen ist das allgemeine Protokoll normalerweise nicht aktiviert. Das langsame Protokoll kann einige SQL-Anweisungen mit Leistungsproblemen lokalisieren, während das allgemeine Protokoll alle SQL-Anweisungen aufzeichnet. Manchmal treten jedoch bei MySQL in der Produktion Leistungsprobleme auf. Das Aktivieren des allgemeinen Protokolls für einen kurzen Zeitraum zum Abrufen des SQL-Ausführungsstatus ist bei der Fehlersuche und Analyse von MySQL-Leistungsproblemen immer noch sehr hilfreich. Oder manchmal sind Sie sich nicht sicher, welche SQL-Anweisung das Programm ausgeführt hat, aber Sie müssen den Fehler beheben. Wenn Sie die Ursache nicht finden können, können Sie das allgemeine Protokoll vorübergehend aktivieren. Wenn Sie in MySQL 5.0 das langsame oder allgemeine Protokoll aktivieren möchten, müssen Sie das System neu starten. Ab MySQL 5.1.6 unterstützen das allgemeine Abfrageprotokoll und das langsame Abfrageprotokoll das Schreiben in Dateien oder Datenbanktabellen. Darüber hinaus können die Protokollaktivierung und die Änderung des Ausgabemodus dynamisch auf globaler Ebene geändert werden. Es gibt mehrere Möglichkeiten, das allgemeine Protokoll zu öffnen. Es folgt eine kurze Einführung und Demonstration: Methode 1: Ändern Sie die my.cnf-Konfigurationsdatei [root@git-server ~]# grep general_log /etc/my.cnf general_log = 1 general_log_file = /tmp/general.log Starten Sie MySQL neu. Dieser Vorgang hat einen dauerhaften Effekt. Natürlich darf diese Methode nicht in der Produktion eingesetzt werden. Weil ein Neustart von MySQL die MySQL-Dienste unterbricht. Gleichzeitig zeichnet general.log alle DDL- und DML-Anweisungen zu MySQL auf, was viele Ressourcen verbraucht. Es wird normalerweise vorübergehend für einige Minuten geöffnet, um bei der Behebung von MySQL-Problemen zu helfen. Es wird anschließend geschlossen. Methode 2: Bedienung in der MySQL-Befehlskonsole Nur der Root-Benutzer hat die Berechtigung, auf diese Datei zuzugreifen Standardmäßig ist dieses Protokoll deaktiviert. mysql> globale Variablen wie „%general%“ anzeigen; +------------------+---------------------------------+ | Variablenname | Wert | +------------------+---------------------------------+ | general_log | AUS | | allgemeine_Protokolldatei | /data/mysql/data/git-server.log | +------------------+---------------------------------+ 2 Zeilen im Satz (0,00 Sek.) MySQL> Manchmal müssen Sie das globale general_log von MySQL vorübergehend aktivieren. Sie können sich bei MySQL anmelden, den Protokollpfad direkt festlegen und general_log aktivieren. mysql> globales general_log_file='/tmp/general_log' festlegen; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> globales General_Log festlegen = ein; Abfrage OK, 0 Zeilen betroffen (0,02 Sek.) mysql> globale Variablen wie „%general%“ anzeigen; +------------------+------------------+ | Variablenname | Wert | +------------------+------------------+ | general_log | EIN | | allgemeine_Protokolldatei | /tmp/allgemeines_Protokoll | +------------------+------------------+ 2 Zeilen im Satz (0,00 Sek.) MySQL> [root@git-server ~]# tailf /tmp/general_log 180717 22:55:51 2 Abfrage Datenbanken anzeigen 180717 22:56:04 2 Abfrage SELECT DATABASE() 2 DB-Test initieren 180717 22:56:14 2 Abfrage select * from student3 Nach der Verwendung können Sie global general_log=off direkt festlegen; schließen Sie dieses Protokoll Methode 3: Speichern Sie das Protokoll in der Tabelle general_log der MySQL-Datenbank mysql> globales log_output='Tabelle' festlegen; mysql> globales General_Log festlegen = ein; mysql> mysql verwenden; mysql> wähle * aus test.student3; +----+--------------+------------+--------+------+ | ID | Lehrername | Lehrer-ID | Name | Geschlecht | +----+--------------+------------+--------+------+ | 1 | Huahua| 1 | Sanan| Weiblich| | 4 | Sansan| 2 | Sanan| Weiblich| | 6 | bibi | 3 | Sanan | Weiblich | +----+--------------+------------+--------+------+ 3 Zeilen im Satz (0,00 Sek.) mysql> wähle * aus general_log; | 17.07.2018 23:00:12 | root[root]@localhost [] | 2 | 1132333306 | Abfrage | select * from test.student3 Durch Betrachten der Informationen in /tmp/general.log können Sie ungefähr erkennen, welche SQL-Abfragen/Aktualisierungen/Löschungen/Einfügungen häufiger vorkommen. Einige Tabellen ändern sich beispielsweise nicht häufig, weisen aber ein großes Abfragevolumen auf, sodass sie zwischengespeichert werden können. Bei Tabellen, die keine hohe Latenz zwischen der primären und der Standby-Datenbank erfordern, können Lesevorgänge in der Standby-Datenbank abgelegt werden. Das Obige sind alle Wissenspunkte zum diesmal eingeführten general_log-Protokoll. Vielen Dank für das Lesen und Ihre Unterstützung für 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Vue-Plugin-Fehler: Auf dieser Seite wurde Vue.js erkannt. Problem gelöst
>>: Centos8 (Minimalinstallation) Tutorial zur Installation von Python3.8+pip
Indexdefinition: Es handelt sich um eine separate...
Als ich kürzlich an einem Projekt arbeitete, wurd...
Indem wir den aktuellen Bildlaufversatz zu den At...
Problemdatensatz Heute wollte ich ein kleines Bau...
Tatsächlich werden viele Leute sagen: „Ich habe ge...
In Anwendungen mit Paging-Abfragen sind Abfragen,...
Sperren in MySQL Sperren sind ein Mittel, um Ress...
Voraussetzung: Percona 5.6 Version, Transaktionsi...
Einführung yum (Yellow dog Updater, Modified) ist...
Vorwort Dieser Artikel konzentriert sich nur dara...
In diesem Artikelbeispiel wird der spezifische Co...
Dieser Artikel fasst hauptsächlich verschiedene P...
Ein Student im zweiten Studienjahr fragte mich, w...
HTML-Eingabeattribute Das Value-Attribut Das Valu...
1. Fügen Sie das Plug-In hinzu und fügen Sie die ...