Mysql
 sql >> Base de données >  >> RDS >> Mysql

Réduisez les requêtes MySQL à une requête pour accélérer

Vérifiez si je capture actuellement le trafic avec le journal général :

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\

Maintenant, je désactive la capture du journal général ci-dessous, car le mien était en train de capturer :

SET GLOBAL general_log=0; -- stop logging

Je DÉPLACE mon fichier journal dans un répertoire de sauvegarde, en le renommant GL_from_20160803_1420_to_20160806_1559

Il y a peu d'ambiguïté quant au contenu et à la plage de capture datetime que le fichier ci-dessus incarne.

Définissez le nouveau nom de la capture du fichier journal (segment de début pour le nom du fichier)

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

Exécutez une de mes applications qui se connecte au serveur et le journal général contient :

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

Remarque :vous devrez peut-être faire

mysqladmin -u root -p flush-log

(invité pour le mot de passe) afin de vider les journaux du cache vers le fichier. Au fait, Sublime Text est génial pour l'actualisation automatique d'un fichier texte actuellement chargé. Par exemple, un fichier journal.

Donc mon ChunkA ci-dessus est le talon de connexion d'une nouvelle connexion entrante. Il est piloté par les commandes du programme en cours d'utilisation, quel qu'il soit. C'est avant les commandes de votre programme que vous êtes habitué et que vous codez. Si vous créez continuellement de nouvelles connexions, exécutez du code que vous écrivez et vous déconnectez, eh bien, tout cela fait partie du bagage. Vous ne contrôlez pas leur optimisation de manière simple.

Ce que vous devriez envisager de faire, c'est de désactiver le journal des requêtes générales dans un environnement de production. Et ne l'activez que pendant les paramètres d'environnement de débogage et de test. L'avoir sur vous augmente la charge inutile sur votre pile.