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

Riduci le query MySQL a una query per accelerare

Verifica se al momento sto acquisendo traffico con il registro generale:

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\

Ora disattivo l'acquisizione del registro generale di seguito, perché il mio stava catturando:

SET GLOBAL general_log=0; -- stop logging

SPOSTO il mio file di registro in una directory di backup, rinominandolo in GL_from_20160803_1420_to_20160806_1559

C'è poca ambiguità nel contenuto e nell'intervallo data/ora di acquisizione incarnato dal file sopra.

Imposta il nuovo nome per l'acquisizione del file di registro (inizio segmento per nome file)

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

Esegui una mia app che si connette al server e il registro generale contiene:

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

Nota:potrebbe essere necessario farlo

mysqladmin -u root -p flush-log

(richiesta password) per svuotare i log dalla cache al file. A proposito, Sublime Text è fantastico per l'aggiornamento automatico di un file di testo attualmente caricato. Ad esempio, un file di registro.

Quindi il mio ChunkA sopra c'è lo stub di connessione di una nuova connessione in arrivo. È guidato dai comandi del programma in uso, qualunque esso sia. È prima dei comandi del tuo programma che sei abituato e codifica. Se crei continuamente nuove connessioni, esegui il codice che scrivi e ti disconnetti, beh, questi fanno tutti parte del bagaglio. Non hai il controllo dell'ottimizzazione in modo semplice.

Quello che dovresti considerare di fare è disattivare il registro delle query generali in un ambiente di produzione. E abilitandolo solo durante le impostazioni dell'ambiente di debug e test. Averlo acceso aumenta il carico inutile per lo stack.