sql >> Databasteknik >  >> RDS >> Mysql

Minska MySQL-frågor till en fråga för att snabba upp

Se om jag för närvarande fångar trafik med den allmänna loggen:

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\

Nu stänger jag av infångningen av den allmänna loggen nedan, eftersom min var att fånga:

SET GLOBAL general_log=0; -- stop logging

JAG FLYTTER min loggfil till en backupkatalog och byter namn på den till GL_from_20160803_1420_to_20160806_1559

Det finns lite oklarheter i innehållet och datumintervallet för fångst som filen ovan förkroppsligar.

Ställ in det nya namnet för loggfilen (Börja segment för filnamn)

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

Kör en app till mig som ansluter till servern och General Log innehåller:

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

Obs:du kan behöva göra

mysqladmin -u root -p flush-log

(ombedd att ange lösenord) för att spola loggarna från cachen till filen. Förresten, Sublimtext är fantastiskt för automatisk uppdatering av en textfil som för närvarande laddas. Till exempel en loggfil.

Så min ChunkA ovan är anslutningsstubben för en ny anslutning som kommer in. Den drivs av kommandona från det program som används, vad det nu kan vara. Det är före dina programkommandon som du är van vid och kodar. Om du kontinuerligt skapar nya anslutningar, exekverar kod du skriver och kopplar bort, så är allt detta en del av bagaget. Du har inte kontroll över att optimera dem på något enkelt sätt.

Det du bör överväga att göra är att stänga AV den allmänna frågeloggen i en produktionsmiljö. Och endast aktivera det under felsöknings- och testmiljöinställningar. Att ha den på ökar onödig börda på din stack.



  1. SQL-server datum Kolumnformat

  2. Hur avdeklarerar man volymer i docker-bilden?

  3. Kör fil med SQLExec som innehåller $$-tecken

  4. flake8 klagar på boolesk jämförelse ==i filterklausul