Ich habe viele Datenbankschemata auf dem MySQL 5.6-Server. Jetzt besteht das Problem hier darin, dass ich die Abfragen nur für ein Schema abfangen möchte.
Ich kann das Abfrageprotokoll nicht für den gesamten Server aktivieren, da eines meiner Schemas stark ausgelastet ist und sich auf den Server auswirkt.
Ist ihre Art und Weise, jedes Tool, mit dem ich die Abfragen nur nach einem einzigen Schema protokollieren konnte.
Ich habe ein Benchmarking-Diagramm gefunden, das die Auswirkungen auf Transaktionen / Sekunde zeigt, wenn das Abfrageprotokoll aktiviert ist.
Antworten:
Interessante Frage und eine +1. Das hat mich interessiert, weil ich mehrere Anwendungsfälle für diese Funktionalität sehen kann.
Leider gibt es für Ihren Fall, in dem Sie die allgemeine Protokollierung nicht aktivieren können, nur eine, eher unzureichende Problemumgehung.
Verwenden Sie dazu die Variable SQL_LOG_OFF , um die Protokollierung für eine bestimmte Verbindung zu deaktivieren. Eine ideale Lösung wäre gewesen, eine "SQL_LOG_ON" -Variable zu haben, wie dies in Oracle möglich ist (äquivalent). Vielleicht könnten Sie versuchen, die Abmeldung für alle außer den interessierenden Verbindungen zu deaktivieren?
Darüber hinaus erfordert dies leider das
SUPER
Privileg. Auch dies ist in Ihrem Fall möglicherweise nicht (wahrscheinlich sogar nicht) möglich.Abhängig von der Schwere Ihres Problems, der Arbeitszeit und der Serverlast zu bestimmten Zeiten können Sie möglicherweise eine Verwendung für Perconas pt-query-Digest finden, die bei der Protokollanalyse hilfreich sein kann. Kleiner Komfort, aber wie immer ist PostgreSQL MySQL weit voraus ( 1 , 2 ).
Wenn Sie eine Funktionsanfrage stellen möchten, würde ich gerne ein "Ich-auch" melden, wenn Sie den Link hier zurück posten.
quelle
Wenn Sie so kurz vor dem Umkippen stehen, dass Sie das allgemeine Protokoll nicht auf DATEI aktivieren können, haben Sie schlimmere Probleme. Sie müssen repariert werden.
Ich vermute, ohne wirkliches Wissen, dass das Slowlog ähnliche Auswirkungen haben würde, insbesondere bei
long_query_time = 0
.5.7 verfügt über eine Funktion zum Umschreiben von Abfragen. Dort könnte ein Trick angewendet werden. (Aber auch hier gibt es einige Gemeinkosten, die gemessen werden sollten.)
Wie lange möchten Sie die Anfragen abfangen? Suchen Sie nur nach der Quelle einer ungezogenen Handlung? Oder versuchen Sie, Abfragen zu sammeln, um einen realistischen Benchmark für diese Tabelle zu erstellen? Oder etwas anderes?
Haben Sie die Replikation aktiviert? Interessieren Sie sich für Lesungen? Oder schreibt? Oder beides?
Wie viele Threads sind gleichzeitig aktiv ? Der von Ihnen angezeigte Benchmark zeigte an, dass für 1 das Protokoll einen geringen Overhead hat. Es ist die Tabellensperre in MyISAM oder CSV, die die Verarbeitung für eine hohe Parallelität beendet.
Ihr zweites Diagramm zeigt, dass die Clients wirklich auf etwa 5-8 gleichzeitige Verbindungen beschränkt sein sollten - sonst sinkt der Durchsatz tatsächlich! Was war
max_connections
undMax_used_connections
für diese Grafik?quelle