web-dev-qa-db-fra.com

Activer le journal de requête pour une base de données unique

J'ai de nombreux schema de base de données dans le serveur MySQL 5.6, maintenant le problème ici est que je souhaite attraper les questions pour un schéma uniquement.

Je ne peux pas activer le journal de requête pour l'ensemble du serveur car l'un de mes schémas est hautement chargé et il affectera le serveur.

Est-ce de quelque manière que ce soit, tout outil à travers lequel je ne pouvais enregistrer que les requêtes par un seul schéma.

J'ai trouvé un graphique de référence qui montre l'impact sur les transactions/seconde lorsque le journal de requête est activé.

enter image description hereenter image description here

8
Suyash Jain

Si vous êtes si proche de la querelle sur laquelle vous ne pouvez pas activer le journal général vers le fichier, vous avez des problèmes les plus difficiles; ils ont besoin de fixation.

Je soupçonne, sans aucune connaissance réelle, que le ralentime aurait un impact similaire, en particulier avec long_query_time = 0.

5.7 a une fonctionnalité "Rewery Rewrite". Une certaine astuce pourrait être utilisée là-bas. (Mais encore une fois, il y a des frais généraux, ce qui devrait être analysé.)

Combien de temps vous voulez attraper les questions? Êtes-vous juste à la recherche de la source d'une action coquine? Ou essayez-vous de recueillir des questions pour construire un point de repère réaliste pour cette table? Ou autre chose?

Avez-vous une réplication allumée? Êtes-vous intéressé par des lectures? Ou écrit? Ou les deux?

Combien de threads sont actif simultanément? La référence que vous avez montrée indiquait que pour 1, le journal a basculé de bas frais généraux. C'est la verrouillage de la table sur Myisam ou CSV qui tue le traitement pour une hausse simultanée.

Votre deuxième graphique souligne que les clients doivent vraiment être limités à environ 5-8 connexions simultanées - sinon le débit diminue! Qu'est ce qui était max_connections et Max_used_connections pour ce graphique?

1
Rick James

Question intéressante et a +1. Cela m'intéressé parce que je peux voir plusieurs cas d'utilisation pour cette financalité.

Malheureusement, pour votre cas où vous ne peut pas basculer sur la journalisation générale, il n'y en a qu'un, plutôt inadéquat, de contournement.

Cela consiste à utiliser la variable SQL_LOG_OFFF 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 que vous pourriez essayer de passer de la déconnexion pour tous sauf la connexion d'intérêt?

De plus, et régulièrement, cela nécessite le privilège SUPER. Encore une fois, cela peut ne pas (même probablement pas) être possible dans votre cas.

En fonction de la gravité de votre problème, de vos heures de travail et de votre charge de serveur à des moments donnés, vous pourrez peut-être trouver une utilisation pour PERCONA PT-Query-Digest qui peut vous aider à l'analyse du journal. Petit confort, mais comme d'habitude PostgreSQL dans les rues avant MySQL ( 1 , 2 ).

Si vous vous souciez de déposer une demande de fonctionnalité, je serais heureux de faire un suivi avec un "moi-même" si vous postez le lien ici.

1
Vérace