Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Reduzieren Sie MySQL-Abfragen auf eine Abfrage, um die Geschwindigkeit zu erhöhen

Prüfen Sie, ob ich derzeit den Datenverkehr mit dem allgemeinen Protokoll erfasse:

SELECT @@general_log;   -- 1 if capturing, 0 if not
-- for me, a 1. This means I have been capturing (good for development. Poor idea for Production)

SELECT @@general_log_file; -- file name for General Log if capturing.
-- for me: GeneralLogBegin_20160803_1420.log

SELECT @@datadir; -- the location of the general_log, and other logs
-- for me: C:\ProgramData\MySQL\MySQL Server 5.6\Data\

Jetzt schalte ich das Erfassen des allgemeinen Protokolls unten aus, weil meins erfasste:

SET GLOBAL general_log=0; -- stop logging

ICH VERSCHIEBE meine Protokolldatei in ein Sicherungsverzeichnis und benenne sie in GL_from_20160803_1420_to_20160806_1559 um

Der Inhalt und der Datums-/Zeitbereich der Erfassung, die die obige Datei verkörpert, sind kaum mehrdeutig.

Legen Sie den neuen Namen für die Erfassung der Protokolldatei fest (Startsegment für Dateiname)

SET GLOBAL general_log_file='GeneralLogBegin_20160806_1559.log';
SET GLOBAL general_log=1; -- Start logging again

Führen Sie eine App von mir aus, die eine Verbindung zum Server herstellt, und das allgemeine Protokoll enthält:

ChunkA:

160806 16:08:37   170 Connect   [email protected] on stackoverflow
          170 Query SHOW VARIABLES
          170 Query SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP())
          170 Query SHOW COLLATION
          170 Query SET NAMES latin1
          170 Query SET character_set_results=NULL
          170 Init DB   my_db_name

Hinweis:Möglicherweise müssen Sie dies tun

mysqladmin -u root -p flush-log

(Passwortabfrage), um die Protokolle aus dem Cache in die Datei zu leeren. Übrigens, Sublime Text ist großartig für die automatische Aktualisierung einer aktuell geladenen Textdatei. Beispielsweise eine Protokolldatei.

Also mein ChunkA Oben ist der Verbindungs-Stub einer neu hereinkommenden Verbindung. Er wird von den Befehlen des verwendeten Programms gesteuert, was auch immer das sein mag. Es ist vor Ihren Programmbefehlen, an die Sie gewöhnt sind, und zu codieren. Wenn Sie ständig neue Verbindungen erstellen, von Ihnen geschriebenen Code ausführen und die Verbindung trennen, gehört dies alles zum Gepäck. Sie haben keine Kontrolle darüber, sie auf einfache Weise zu optimieren.

Was Sie in Betracht ziehen sollten, ist das Deaktivieren des allgemeinen Abfrageprotokolls in einer Produktionsumgebung. Und nur während der Debug- und Testumgebungseinstellungen aktivieren. Wenn Sie es eingeschaltet haben, wird Ihr Stack unnötig belastet.