J'ai de nombreux schémas de base de données sur le serveur mysql 5.6, maintenant le problème ici est que je veux intercepter les requêtes pour un seul schéma.
Je ne peux pas activer le journal des requêtes pour tout le serveur car l'un de mes schémas est très chargé et cela aura un impact sur le serveur.
Est-ce leur façon, n'importe quel outil grâce auquel je ne pouvais enregistrer les requêtes que par schéma unique.
J'ai trouvé un graphique d'analyse comparative qui montre l'impact sur les transactions / seconde lorsque le journal des requêtes est activé.
Réponses:
Question intéressante et +1. Cela m'a intéressé car je peux voir plusieurs cas d'utilisation pour cette fonctionnalité.
Malheureusement, pour votre cas où vous ne pouvez pas activer la journalisation générale, il existe une seule solution de contournement, plutôt inadéquate.
Cela revient à utiliser la variable SQL_LOG_OFF pour désactiver la journalisation pour une connexion donnée. Une solution idéale aurait été d'avoir une variable "SQL_LOG_ON" comme on peut le faire dans Oracle (équivalent) - peut-être pourriez-vous essayer de désactiver la déconnexion pour tout sauf la ou les connexions qui vous intéressent?
En outre, et malheureusement, cela requiert le
SUPER
privilège. Encore une fois, cela peut ne pas être possible (même probablement) dans votre cas.Selon la gravité de votre problème, les heures de travail et la charge du serveur à des moments donnés, vous pourrez peut-être trouver une utilisation du pt-query-digest de Percona qui peut aider à l'analyse des journaux. Petit confort, mais comme d'habitude PostgreSQL est en avance sur MySQL ( 1 , 2 ).
Si vous souhaitez déposer une demande de fonctionnalité, je serais heureux de faire un "moi-aussi" si vous postez le lien ici.
la source
Si vous êtes si près de vous arrêter que vous ne pouvez pas activer le journal général sur FILE, vous avez des problèmes plus graves; ils ont besoin d'être réparés.
Je soupçonne, sans aucune connaissance réelle, que le slowlog aurait un impact similaire, surtout avec
long_query_time = 0
.5.7 a une fonction de "réécriture de requête". Une astuce pourrait y être utilisée. (Mais, encore une fois, il y a des frais généraux, qui devraient être comparés.)
Combien de temps voulez-vous intercepter les requêtes? Cherchez-vous juste la source d'une action coquine? Ou essayez-vous de rassembler des requêtes pour créer une référence réaliste pour cette table? Ou autre chose?
La réplication est-elle activée? Êtes-vous intéressé par les lectures? Ou écrit? Ou les deux?
Combien de threads sont actifs simultanément? L'indice de référence que vous avez montré indique que pour 1, le journal a une faible surcharge. C'est le verrou de table sur MyISAM ou CSV qui tue le traitement pour une concurrence élevée.
Votre deuxième graphique indique que les clients devraient vraiment être limités à environ 5-8 connexions simultanées - sinon le débit diminue en fait! Quels étaient
max_connections
etMax_used_connections
pour ce graphique?la source