sql >> Database teknologi >  >> RDS >> Mysql

Reducer MySQL-forespørgsler til én forespørgsel for at fremskynde

Se, om jeg i øjeblikket fanger trafik med den generelle log:

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 deaktiverer jeg optagelsen af ​​den generelle log nedenfor, fordi min fangede:

SET GLOBAL general_log=0; -- stop logging

JEG FLYTTER min logfil til en backup-mappe og omdøber den til GL_from_20160803_1420_to_20160806_1559

Der er lidt uklarhed med hensyn til indholdet og dato- og tidsintervallet for optagelsen, som ovenstående fil inkorporerer.

Indstil det nye navn for logfilfangsten (Begynd segment for filnavn)

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

Kør en min app, der opretter forbindelse til serveren, og General Log indeholder:

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

Bemærk:du skal muligvis gøre

mysqladmin -u root -p flush-log

(bedt om adgangskode) for at tømme logfilerne fra cachen til filen. Forresten, Sublime tekst er fantastisk til automatisk opdatering af en tekstfil, der aktuelt er indlæst. Som f.eks. en logfil.

Så min ChunkA ovenfor er forbindelsesstubben for en ny forbindelse, der kommer ind. Den drives af kommandoerne fra det program, der er i brug, hvad end det måtte være. Det er før dine programkommandoer, du er vant til og kode. Hvis du hele tiden opretter nye forbindelser, udfører kode, du skriver, og afbryder forbindelsen, så er disse alle en del af bagagen. Du har ikke kontrol over at optimere dem på nogen enkel måde.

Det, du bør overveje at gøre, er at slå den generelle forespørgselslog FRA i et produktionsmiljø. Og aktiverer det kun under fejlfindings- og testmiljøindstillinger. At have den tændt øger unødig byrde på din stak.



  1. Kan jeg få en MySQL-database til automatisk at tildele en værdi til en kolonne efter en insert-sætning?

  2. Top 5 gratis værktøjer til databasedesign

  3. Hvordan finder man forskellen mellem to tabeller?

  4. rydde op i db for overflødige data