GoGPT Best VPN GoSearch

OnWorks-Favicon

pt-query-digestp – Online in der Cloud

Führen Sie pt-query-digestp im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl pt-query-digestp, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


pt-query-digest – Analysieren Sie MySQL-Abfragen aus Protokollen, Prozesslisten und TCP-Dump.

ZUSAMMENFASSUNG


Verwendung: pt-query-digest [OPTIONEN] [DATEIEN] [DSN]

pt-query-digest analysiert MySQL-Abfragen aus langsamen, allgemeinen und binären Protokolldateien. Es kann
Analysieren Sie auch Abfragen von „SHOW PROCESSLIST“ und MySQL-Protokolldaten von tcpdump. Von
Standardmäßig werden Abfragen nach Fingerabdruck gruppiert und in absteigender Reihenfolge der Abfragezeit gemeldet
(dh die langsamsten Abfragen zuerst). Wenn keine „FILES“ angegeben sind, liest das Tool „STDIN“. Der
optional „DSN“ wird für bestimmte Optionen wie „--since“ und „--until“ verwendet.

Melden Sie die langsamsten Abfragen von „slow.log“:

pt-query-digest slow.log

Melden Sie die langsamsten Abfragen aus der Prozessliste auf Host1:

pt-query-digest --processlist h=host1

Erfassen Sie MySQL-Protokolldaten mit tcppdump und melden Sie dann die langsamsten Abfragen:

tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 Port 3306 > mysql.tcp.txt

pt-query-digest --type tcpdump mysql.tcp.txt

Speichern Sie Abfragedaten von „slow.log“ auf Host2 zur späteren Überprüfung und Trendanalyse:

pt-query-digest --review h=host2 --no-report slow.log

RISIKEN


Percona Toolkit ist ausgereift, in der Praxis bewährt und gut getestet, aber alle Datenbank
Tools können eine Gefahr für das System und den Datenbankserver darstellen. Bevor Sie dieses Werkzeug verwenden,
Bitte:

· Lesen Sie die Dokumentation des Tools

· Überprüfen Sie die bekannten "BUGS" des Tools

· Testen Sie das Tool auf einem Nicht-Produktionsserver

· Sichern Sie Ihren Produktionsserver und überprüfen Sie die Backups

BESCHREIBUNG


pt-query-digest ist ein ausgefeiltes, aber einfach zu verwendendes Tool zur Analyse von MySQL-Abfragen. Es
kann Abfragen aus langsamen, allgemeinen und binären MySQL-Protokollen analysieren. (Binärprotokolle müssen zuerst sein
in Text umgewandelt, siehe „--type“). Es kann auch das Protokoll „SHOW PROCESSLIST“ und MySQL verwenden
Daten von tcpdump. Standardmäßig meldet das Tool, welche Abfragen am langsamsten sind und
Daher ist die Optimierung am wichtigsten. Komplexere und maßgeschneiderte Berichte können sein
erstellt durch die Verwendung von Optionen wie „--group-by“, „--filter“ und „--embedded-attributes“.

Die Abfrageanalyse ist eine Best Practice, die häufig durchgeführt werden sollte. Um dies einfacher zu machen,
pt-query-digest verfügt über zwei Funktionen: Abfrageüberprüfung („--review“) und Abfrageverlauf
("--Geschichte"). Wenn die Option „--review“ verwendet wird, werden alle eindeutigen Abfragen in einem gespeichert
Datenbank. Wenn das Tool erneut mit „--review“ ausgeführt wird, werden Abfragen in der als überprüft markiert
Datenbank werden im Bericht nicht ausgedruckt. Dies hebt neue Abfragen hervor, die durchgeführt werden müssen
überprüft. Wenn die Option „--history“ verwendet wird, werden Abfragemetriken (Abfragezeit, Sperrzeit,
usw.) für jede einzelne Abfrage werden in der Datenbank gespeichert. Jedes Mal, wenn das Tool ausgeführt wird
„--history“, desto mehr historische Daten werden gespeichert, die für Trends und Analysen verwendet werden können
Abfrageleistung im Laufe der Zeit.

ATTRIBUTES


pt-query-digest arbeitet mit Ereignissen, bei denen es sich um eine Sammlung von sogenannten Schlüssel-Wert-Paaren handelt
Attribute. Die meisten Attribute werden Sie sofort erkennen: „Query_time“,
„Lock_time“ und so weiter. Sie können sich einfach ein langsames Protokoll ansehen und sie sehen. Es gibt jedoch welche
Einige sind im langsamen Protokoll nicht vorhanden, und langsame Protokolle können tatsächlich verschiedene Arten enthalten
von Attributen (z. B. verfügen Sie möglicherweise über einen Server mit den Percona-Patches).

Unter „ATTRIBUTE-REFERENZ“ am Ende dieser Dokumentation finden Sie eine Liste allgemeiner und
„--type“-spezifische Attribute. Eine Vertrautheit mit diesen Attributen ist erforderlich für
Arbeiten mit „--filter“, „--ignore-attributes“ und anderen attributbezogenen Optionen.

Durch den kreativen Einsatz von „--filter“ können Sie neue Attribute erstellen, die von vorhandenen abgeleitet werden
Attribute. Um beispielsweise ein Attribut namens „Row_ratio“ zur Untersuchung zu erstellen
Verhältnis von „Rows_sent“ zu „Rows_examined“, geben Sie einen Filter an wie:

--filter '($event->{Row_ratio} = $event->{Rows_sent} / ($event->{Rows_examined})) && 1'

Der „&& 1“-Trick ist erforderlich, um eine gültige einzeilige Syntax zu erstellen, die immer wahr ist, auch wenn
Die Zuweisung wird zufällig als falsch ausgewertet. Das neue Attribut wird automatisch in angezeigt
die Ausgabe:

# Reihenverhältnis 1.00 0.00 1 0.50 1 0.71 0.50

Auf diese Weise erstellte Attribute können für „--order-by“ oder jede andere erforderliche Option angegeben werden
ein Attribut.

AUSGABE


Der Standardwert „--output“ ist ein Abfrageanalysebericht. Die Option „--[no]report“ steuert
ob dieser Bericht gedruckt wird oder nicht. Manchmal möchten Sie möglicherweise alle Abfragen analysieren
aber unterdrücken Sie den Bericht, zum Beispiel bei Verwendung von „--review“ oder „--history“.

Für jede analysierte Abfrageklasse gibt es einen Absatz. Eine „Klasse“ von Abfragen haben alle
der gleiche Wert für das „--group-by“-Attribut, das standardmäßig „fingerprint“ ist. (Sehen
„ATTRIBUTE“.) Ein Fingerabdruck ist eine abstrahierte Version des Abfragetextes mit Literalen
entfernt, Leerzeichen reduziert und so weiter. Der Bericht ist so formatiert, dass er leicht zu lesen ist
Ohne Umbruch in E-Mails einfügen, und alle Nicht-Abfragezeilen beginnen mit einem Kommentar, also Sie
Sie können es in einer SQL-Datei speichern und in Ihrem bevorzugten Texteditor zur Syntaxhervorhebung öffnen.
Am Anfang steht ein Reaktionszeitprofil.

Die hier beschriebene Ausgabe wird durch „--report-format“ gesteuert. Diese Option ermöglicht es Ihnen
Geben Sie an, was gedruckt werden soll und in welcher Reihenfolge. Die Standardausgabe in der Standardreihenfolge ist
hier beschrieben.

Der Bericht beginnt standardmäßig mit einem Absatz über den gesamten Analyselauf
Die Informationen sind denen, die Sie für jede Abfrageklasse im Protokoll sehen, sehr ähnlich, aber
Es gibt keine Informationen, deren weltweite Aufbewahrung zu teuer wäre
Analyse. Es enthält auch einige Statistiken über die Ausführung des Codes selbst, beispielsweise über die CPU
und Speichernutzung, das lokale Datum und die Uhrzeit des Laufs sowie eine Liste der Eingabedateien
gelesen/analysiert.

Daran anschließend ist das Reaktionszeitprofil über die Ereignisse dargestellt. Dies ist eine sehr zusammengefasste Zusammenfassung
Ansicht der eindeutigen Ereignisse im folgenden detaillierten Abfragebericht. Es enthält die
folgende Spalten:

Spaltenbedeutung
============ ==================================== ====================
Rang Der Rang der Abfrage innerhalb des gesamten Satzes analysierter Abfragen
Abfrage-ID Der Fingerabdruck der Abfrage
Antwortzeit Die Gesamtantwortzeit und der Prozentsatz der Gesamtantwortzeit
Aufrufe Die Häufigkeit, mit der diese Abfrage ausgeführt wurde
R/Call Die mittlere Antwortzeit pro Ausführung
V/M Das Varianz-zu-Mittelwert-Verhältnis der Antwortzeit
Item Die destillierte Abfrage

Eine letzte Zeile, deren Rang als MISC angezeigt wird, enthält aggregierte Statistiken zu den Abfragen, die durchgeführt wurden
wurden aufgrund von Optionen wie „--limit“ und „--outliers“ nicht in den Bericht aufgenommen. Für
Einzelheiten zum Varianz-Mittelwert-Verhältnis finden Sie unter
http://en.wikipedia.org/wiki/Index_of_dispersion.

Als nächstes wird der detaillierte Abfragebericht gedruckt. Jede Abfrage erscheint in einem Absatz. Hier ist ein
Beispiel, leicht umformatiert, sodass „perldoc“ in einem Terminal keine Zeilen umbricht. Der
Im Folgenden wird es sich um einen einzigen Absatz handeln, den wir jedoch für Kommentare aufteilen.

# Abfrage 2: 0.01 QPS, 0.02x Conc, ID 0xFDEA8D2993C9CAF3 bei Byte 160665

Diese Zeile identifiziert die fortlaufende Nummer der Abfrage in der durch angegebenen Sortierreihenfolge
"--Sortieren nach". Dann gibt es noch die Abfragen pro Sekunde und die ungefähre Parallelität für
Diese Abfrage (berechnet als Funktion der Zeitspanne und der gesamten Query_time). Als nächstes gibt es
eine Abfrage-ID. Bei dieser ID handelt es sich ggf. um eine hexadezimale Version der Prüfsumme der Abfrage in der Datenbank
mit „--review“. Mit a können Sie die Details der überprüften Abfrage aus der Datenbank auswählen
Abfrage wie „SELECT .... WHERE checksum=0xFDEA8D2993C9CAF3“.

Wenn Sie den Bericht untersuchen und jede Probe eines bestimmten Artikels ausdrucken möchten
Abfrage, dann kann der folgende „--filter“ hilfreich sein:

pt-query-digest slow.log \
--no-report \
--output slowlog \
--filter '$event->{fingerprint} \
&& make_checksum($event->{fingerprint}) eq "FDEA8D2993C9CAF3"'

Beachten Sie, dass Sie das Präfix „0x“ aus der Prüfsumme entfernen müssen.

Für den Fall, dass Sie schließlich ein Beispiel der Abfrage in der Protokolldatei finden möchten, gibt es das Byte
versetzt, wohin man schauen kann. (Dies ist aufgrund einiger Anomalien in der nicht immer korrekt
(langsames Protokollformat, aber normalerweise ist es richtig.) Die Position bezieht sich auf das schlechteste Beispiel, das
Wir werden weiter unten mehr darüber sehen.

Als nächstes folgt die Tabelle mit Metriken zu dieser Abfrageklasse.

# PCT insgesamt Min. Max. Durchschnitt 95 % Standardabw. Median
# Zählen 0 2
# Ausführungszeit 13 1105s 552s 554s 553s 554s 2s 553s
# Sperrzeit 0 216us 99us 117us 108us 117us 12us 108us
# Gesendete Zeilen 20 6.26 Mio. 3.13 Mio. 3.13 Mio. 3.13 Mio. 3.13 Mio. 12.73 3.13 Mio
# Zeilenprüfung 0 6.26M 3.13M 3.13M 3.13M 3.13M 12.73 3.13M

Die erste Zeile enthält die Spaltenüberschriften für die Tabelle. Der Prozentsatz ist der Prozentsatz des
Summe für den gesamten Analyselauf, und die Summe ist der tatsächliche Wert der angegebenen Werte
metrisch. In diesem Fall können wir beispielsweise sehen, dass die Abfrage zweimal ausgeführt wurde
13 % der Gesamtzahl der Abfragen in der Datei. Die Spalten „Min“, „Max“ und „Durchschnitt“ sind selbständig.
erläuternd. Die 95 %-Spalte zeigt das 95. Perzentil; 95 % der Werte sind kleiner als oder
gleich diesem Wert. Die Standardabweichung zeigt Ihnen, wie eng die Werte gruppiert sind.
Die Standardabweichung und der Median werden beide aus dem 95. Perzentil berechnet und verworfen
die extrem großen Werte.

Die Statistiken zu Standardabweichung, Median und 95. Perzentil sind Näherungswerte. Genaue Statistiken
Es ist erforderlich, jeden angezeigten Wert aufzubewahren, zu sortieren und einige Berechnungen durchzuführen. Dies nutzt
viel Erinnerung. Um dies zu vermeiden, halten wir 1000 Eimer bereit, von denen jeder 5 % größer ist als der andere
vorher, im Bereich von .000001 bis zu einer sehr großen Zahl. Wenn wir einen Wert sehen, erhöhen wir ihn
der Eimer, in den es fällt. Somit haben wir pro Abfrageklasse einen festen Speicher. Der
Der Nachteil ist die Ungenauigkeit, die typischerweise im 5-Prozent-Bereich liegt.

Als nächstes haben wir Statistiken zu den Benutzern, Datenbanken und dem Zeitraum für die Abfrage.

# Benutzer 1 Benutzer1
# Datenbanken 2 db1(1) db2(1)
# Zeitbereich 2008 11:26:04 bis 55 18:2008:11

Die Benutzer und Datenbanken werden als Anzahl unterschiedlicher Werte angezeigt, gefolgt von den Werten.
Wenn es nur eines gibt, wird es einzeln angezeigt; Wenn es viele sind, zeigen wir jeweils die meisten
Häufigkeit, gefolgt von der Häufigkeit des Auftretens.

# Query_time-Verteilung
# 1uns
# 10uns
# 100uns
# 1ms
# 10ms #####
# 100ms ###################
# 1s ##########
# 10s+

Die Ausführungszeiten zeigen ein logarithmisches Diagramm der Zeitclusterung. Jede Abfrage geht in eine ein
der „Eimer“ und wird hochgezählt. Die Eimer sind Zehnerpotenzen. Der erste Eimer ist
alle Werte im „Einzel-Mikrosekunden-Bereich“ – also weniger als 10us. Das zweite ist
„Zehn Mikrosekunden“, was von 10us bis (aber nicht einschließlich) 100us reicht; und so weiter.
Das Diagrammattribut kann durch Angabe von „--report-histogram“ geändert werden, ist jedoch auf Folgendes beschränkt
zeitbasierte Attribute.

# Tische
# TABELLE STATUS ANZEIGEN LIKE 'table1'\G
# SHOW CREATE TABLE `table1`\G
# ERKLÄREN
SELECT * FROM table1\G

Dieser Abschnitt dient der Annehmlichkeit: Wenn Sie versuchen, die in der angezeigten Abfragen zu optimieren
langsames Protokoll möchten Sie wahrscheinlich die Tabellenstruktur und -größe untersuchen. Dies sind Copy-and-
Einfügefertige Befehle, um dies zu tun.

Abschließend sehen wir ein Beispiel der Abfragen dieser Abfrageklasse. Das ist kein Zufall
Probe. Es ist die Abfrage, die gemäß der durch angegebenen Sortierreihenfolge die schlechteste Leistung erbracht hat
"--Sortieren nach". Normalerweise sehen Sie direkt davor eine kommentierte „# EXPLAIN“-Zeile
Sie können die Abfrage kopieren und einfügen, um ihren EXPLAIN-Plan zu untersuchen. Aber für Nicht-SELECT-Abfragen das
Da dies nicht möglich ist, versucht das Tool, die Abfrage in eine ungefähr gleichwertige Abfrage umzuwandeln
SELECT-Abfrage und fügt diese unten hinzu.

Wenn Sie dieses Beispielereignis im Protokoll finden möchten, verwenden Sie den oben genannten Offset und
so etwas wie folgendes:

Schwanz -c + /Pfad/zur/Datei | Kopf

Siehe auch „--report-format“.

QUERY REVIEW


Bei einer Abfrage „--review“ werden alle analysierten Abfrage-Fingerabdrücke gespeichert. Das
hat mehrere Vorteile:

· Sie können Metadaten zu Abfrageklassen hinzufügen, z. B. um sie zur Nachverfolgung zu markieren oder hinzuzufügen
Notizen zu Abfragen hinzufügen oder sie mit einer Problem-ID für Ihr Problemverfolgungssystem kennzeichnen.

· Sie können bei nachfolgenden Durchläufen auf die gespeicherten Werte zurückgreifen, sodass Sie wissen, ob dies der Fall ist
Habe schon einmal eine Anfrage gesehen. Dies kann Ihnen helfen, doppelte Arbeit zu reduzieren.

· Sie können historische Daten wie die Zeilenanzahl, Abfragezeiten usw. speichern
alles, was Sie im Bericht sehen können.

Um diese Funktion zu nutzen, führen Sie pt-query-digest mit der Option „--review“ aus. Es wird gespeichert
die Fingerabdrücke und andere Informationen in die von Ihnen angegebene Tabelle ein. Das nächste Mal, wenn Sie es ausführen
Mit der gleichen Option wird Folgendes ausgeführt:

· Es werden keine Anfragen angezeigt, die Sie bereits überprüft haben. Eine Abfrage gilt als
bereits überprüft, wenn Sie einen Wert für die Spalte „reviewed_by“ festgelegt haben. (Wenn Sie wollen
Um Abfragen anzuzeigen, die Sie bereits überprüft haben, verwenden Sie die Option „--report-all“.)

· Abfragen, die Sie überprüft haben und nicht in der Ausgabe erscheinen, führen zu Lücken in der
Abfragenummernfolge in der ersten Zeile jedes Absatzes. Und der Wert, den Sie haben
Der für „--limit“ angegebene Wert wird weiterhin berücksichtigt. Wenn Sie also alle Abfragen in überprüft haben
Wenn Sie die Top 10 eingeben und nach den Top 10 fragen, wird in der Ausgabe nichts angezeigt.

· Wenn Sie die von Ihnen bereits überprüften Abfragen sehen möchten, können Sie dies angeben
„--report-all“. Dann sehen Sie die normale Analyseausgabe, aber auch die
Informationen aus der Überprüfungstabelle direkt unter dem Ausführungszeitdiagramm. Zum Beispiel,

# Überprüfen Sie die Informationen
# Kommentare: Wirklich schlechte IN()-Unterabfrage, bald beheben!
#first_seen: 2008 12:01:11
# jira_ticket: 1933
# last_seen: 2008-12-18 11:49:07
# Priorität: hoch
# reviewed_by: xaprb
# überprüft_am: 2008 12:18:15

Diese Metadaten sind nützlich, da Sie beim Analysieren Ihrer Abfragen Ihre Kommentare erhalten
direkt in den Bericht integriert.

Fingerabdrücke


Ein Abfragefingerabdruck ist die abstrahierte Form einer Abfrage, die eine Gruppierung ermöglicht
ähnliche Abfragen zusammen. Durch das Abstrahieren einer Abfrage werden Literalwerte entfernt und normalisiert
Leerzeichen usw. Betrachten Sie beispielsweise diese beiden Abfragen:

SELECT Name, Passwort FROM Benutzer WHERE id='12823';
Wählen Sie Namen und Passwort vom Benutzer
wo id=5;

Beide Abfragen werden mit einem Fingerabdruck versehen

Wählen Sie Namen und Passwort vom Benutzer aus, wobei id=?

Sobald der Fingerabdruck der Abfrage bekannt ist, können wir von einer Abfrage sprechen, als ob sie es wäre
repräsentiert alle ähnlichen Abfragen.

Die Funktionsweise von „pt-query-digest“ ist analog zu einer GROUP BY-Anweisung in SQL. (Aber beachten Sie das
„mehrere Spalten“ definiert keine mehrspaltige Gruppierung; es definiert mehrere Berichte!)
Wenn Ihre Befehlszeile so aussieht,

pt-query-digest \
--group-by Fingerabdruck \
--order-by Query_time:sum \
--limit 10 \
slow.log

Das entsprechende Pseudo-SQL sieht so aus:

SELECT WORST(query BY Query_time), SUM(Query_time), ...
VON /path/to/slow.log
GRUPPE NACH FINGERABDRUCK (Abfrage)
ORDER BY SUM(Query_time) DESC
LIMIT 10

Sie können auch den Wert „distill“ verwenden, der eine Art Superfingerabdruck darstellt. Sehen
„--group-by“ für mehr.

Das Query-Fingerprinting berücksichtigt viele Sonderfälle, die sich in der Forschung als notwendig erwiesen haben
echte Welt. Beispielsweise entspricht eine „IN“-Liste mit 5 Literalen tatsächlich einer mit 4
Literale, sodass Listen von Literalen zu einem einzigen zusammengefasst werden. Wenn Sie etwas finden, das
nicht ordnungsgemäß mit dem Fingerabdruck versehen ist, reichen Sie bitte einen Fehlerbericht mit einem reproduzierbaren Testfall ein.

Hier ist eine Liste der Transformationen während des Fingerabdrucks, die möglicherweise nicht vollständig ist:

· Gruppieren Sie alle SELECT-Abfragen von mysqldump zusammen, auch wenn sie unterschiedlich sind
Tische. Gleiches gilt für alle Abfragen von pt-table-checksum.

· Kürzen Sie mehrwertige INSERT-Anweisungen auf eine einzelne WERTE() Liste.

· Kommentare entfernen.

· Abstrahieren Sie die Datenbanken in USE-Anweisungen, sodass alle USE-Anweisungen zusammengefasst werden.

· Ersetzen Sie alle Literale, z. B. Zeichenfolgen in Anführungszeichen. Aus Effizienzgründen der Code, der ersetzt
Literale Zahlen sind in gewisser Weise nicht selektiv und könnten einige Dinge als Zahlen ersetzen
wenn sie es wirklich nicht sind. Auch hexadezimale Literale werden ersetzt. NULL wird behandelt als
ein wörtliches. Auch in Bezeichnern eingebettete Zahlen werden ersetzt, also Tabellen benannt
In ähnlicher Weise wird ein Fingerabdruck auf dieselben Werte übertragen (z. B. Benutzer_2009 und Benutzer_2010).
wird der Fingerabdruck identisch sein).

· Reduzieren Sie alle Leerzeichen in ein einziges Leerzeichen.

· Schreiben Sie die gesamte Abfrage in Kleinbuchstaben.

· Ersetzen Sie alle darin enthaltenen Literale IN() und WERTE() Listen mit einem einzigen Platzhalter,
unabhängig von der Kardinalität.

· Reduzieren Sie mehrere identische UNION-Abfragen zu einer einzigen.

OPTIONAL


Dieses Tool akzeptiert zusätzliche Befehlszeilenargumente. Siehe "SYNOPSIS" und Verwendung
Informationen für Details.

--ask-pass
Beim Herstellen einer Verbindung mit MySQL zur Eingabe eines Kennworts auffordern.

--attribute-aliases
Typ: Array; Standard: db|Schema

Liste von Attribut|Alias ​​usw.

Bestimmte Attribute haben mehrere Namen, z. B. db und Schema. Wenn eine Veranstaltung nicht vorhanden ist
Das primäre Attribut, pt-query-digest, sucht nach einem Alias-Attribut. Wenn es eine findet
Alias ​​erstellt es das Primärattribut mit dem Wert des Alias-Attributs und entfernt es
das Alias-Attribut.

Wenn das Ereignis das primäre Attribut hat, werden alle Alias-Attribute gelöscht.

Dies trägt dazu bei, Ereignisattribute zu vereinfachen, sodass beispielsweise keine Berichte erstellt werden
Zeilen für Datenbank und Schema.

--attribute-value-limit
Typ: int; Standard: 4294967296

Eine Plausibilitätsgrenze für Attributwerte.

Diese Option behandelt Fehler in der langsamen Protokollierungsfunktion, die zu großen Werten für führen
Attribute. Wenn der Wert des Attributs größer als dieser Wert ist, wird der zuletzt gesehene Wert für verwendet
Stattdessen wird diese Abfrageklasse verwendet.

--Zeichensatz
Kurzform: -A; Typ: Zeichenfolge

Standardzeichensatz. Wenn der Wert utf8 ist, setzt Perls binmode auf STDOUT auf utf8,
übergibt die Option mysql_enable_utf8 an DBD::mysql und führt danach SET NAMES UTF8 aus
Verbindung zu MySQL. Jeder andere Wert setzt binmode auf STDOUT ohne die utf8-Ebene,
und führt SET NAMES aus, nachdem eine Verbindung zu MySQL hergestellt wurde.

--config
Typ: Array

Lesen Sie diese durch Kommas getrennte Liste von Konfigurationsdateien; falls angegeben, muss dies der erste sein
Option in der Befehlszeile.

--[no] Continue-on-Error
Standard: ja

Setzen Sie die Analyse fort, auch wenn ein Fehler auftritt. Das Tool wird nicht ewig weiterlaufen: es
stoppt, sobald ein Prozess 100 Fehler verursacht. In diesem Fall liegt wahrscheinlich ein Fehler vor
Werkzeug oder die Eingabe ist ungültig.

--[no]create-history-table
Standard: ja

Erstellen Sie die Tabelle „--history“, falls sie nicht vorhanden ist.

Diese Option bewirkt, dass die durch „--history“ angegebene Tabelle mit der Standardeinstellung erstellt wird
Struktur, die in der Dokumentation für „--history“ gezeigt wird.

--[no]create-review-table
Standard: ja

Erstellen Sie die Tabelle „--review“, falls sie nicht vorhanden ist.

Diese Option bewirkt, dass die durch „--review“ angegebene Tabelle mit der Standardeinstellung erstellt wird
Struktur, die in der Dokumentation für „--review“ gezeigt wird.

--dämonisieren
In den Hintergrund gabeln und von der Schale lösen. Nur POSIX-Betriebssysteme.

--Datenbank
Kurzform: -D; Typ: Zeichenfolge

Verbinden Sie sich mit dieser Datenbank.

--defaults-Datei
Kurzform: -F; Typ: Zeichenfolge

Lesen Sie nur MySQL-Optionen aus der angegebenen Datei. Sie müssen einen absoluten Pfadnamen angeben.

--embedded-attributes
Typ: Array

Zwei Perl-Regex-Muster zum Erfassen von in Abfragen eingebetteten Pseudoattributen.

Eingebettete Attribute können spezielle Attribut-Wert-Paare sein, die Sie versteckt haben
Kommentare. Der erste reguläre Ausdruck sollte mit dem gesamten Satz von Attributen übereinstimmen (falls vorhanden).
sind mehrere). Der zweite reguläre Ausdruck sollte mit Attribut-Wert-Paaren übereinstimmen und diese erfassen
der erste reguläre Ausdruck.

Angenommen, Ihre Abfrage sieht beispielsweise wie folgt aus:

SELECT * von Benutzern – Datei: /login.php, Zeile: 493;

Sie können pt-query-digest mit der folgenden Option ausführen:

pt-query-digest --embedded-attributes ' -- .*','(\w+): ([^\,]+)'

Der erste reguläre Ausdruck erfasst den gesamten Kommentar:

" -- Datei: /login.php, Zeile: 493;"

Der zweite Teil zerlegt es in Attribut-Wert-Paare und fügt sie dem Ereignis hinzu:

ATTRIBUTWERT
========= ==========
Datei /login.php
Linie 493

HINWEIS: Alle Kommas in den Regex-Mustern müssen mit \ maskiert werden, andernfalls das Muster
wird brechen.

--expected-range
Typ: Array; Standard: 5,10

Erklären Sie, wenn mehr oder weniger Elemente vorhanden sind als erwartet.

Definiert die Anzahl der Elemente, die voraussichtlich in dem durch „--[no]report“ angegebenen Bericht angezeigt werden.
wie durch „--limit“ und „--outliers“ gesteuert. Wenn sich mehr oder weniger Artikel im
Bericht, jeder wird erklären, warum es aufgenommen wurde.

--erklären
Typ: DSN

Führen Sie EXPLAIN für die Beispielabfrage mit diesem DSN aus und drucken Sie die Ergebnisse aus.

Dies funktioniert nur, wenn „--group-by“ den Fingerabdruck einschließt. Es führt dazu, dass pt-query-digest ausgeführt wird
Führen Sie EXPLAIN aus und fügen Sie die Ausgabe in den Bericht ein. Zur Sicherheit erscheinende Abfragen
eine Unterabfrage zu haben, die EXPLAIN ausführt, wird nicht EXPLAINed. Das sind typischerweise
„Abgeleitete Tabelle“-Abfragen des Formulars

wähle ... aus ( wähle .... ) der;

Die EXPLAIN-Ergebnisse werden im vollständigen Hochformat im Ereignisbericht ausgedruckt
erscheint am Ende jedes Ereignisberichts im vertikalen Stil („\G“), genau wie MySQL
druckt es aus.

--Filter
Typ: Zeichenfolge

Verwerfen Sie Ereignisse, für die dieser Perl-Code nicht „true“ zurückgibt.

Bei dieser Option handelt es sich um eine Zeichenfolge mit Perl-Code oder eine Datei mit Perl-Code, die kompiliert wird
in eine Unterroutine mit einem Argument: $event. Dies ist ein Hashref. Wenn der angegebene Wert
eine lesbare Datei ist, liest pt-query-digest die gesamte Datei und verwendet deren Inhalt
als Code. Die Datei sollte kein Shebang (#!/ Usr / bin / perl) Linie.

Wenn der Code „true“ zurückgibt, wird die Rückrufkette fortgesetzt; sonst endet es. Der
Code ist die letzte Anweisung in der Unterroutine außer „return $event“. Der
Unterprogrammvorlage ist:

sub { $event = shift; Filter && return $event; }

In der Befehlszeile angegebene Filter werden in Klammern eingeschlossen, z. B. „( filter
)". Für komplexe, mehrzeilige Filter müssen Sie den Code in eine Datei einfügen, damit er funktioniert
nicht in Klammern gesetzt werden. In jedem Fall muss der Filter syntaktisch produzieren
gültiger Code angesichts der Vorlage. Zum Beispiel ein if-else-Zweig, der im Befehl angegeben wird
Zeile wäre ungültig:

--filter 'if () { } else { }' # FALSCH

Da es in der Befehlszeile angegeben wird, wird der if-else-Zweig darin eingeschlossen
Klammern, die syntaktisch nicht gültig sind. Also etwas Komplexeres erreichen
So würde es erforderlich sein, den Code in eine Datei einzufügen, zum Beispiel filter.txt:

mein $event_ok; if (...) { $event_ok=1; } else { $event_ok=0; } $event_ok

Geben Sie dann „--filter filter.txt“ an, um den Code aus filter.txt zu lesen.

Wenn der Filtercode nicht kompiliert werden kann, bricht pt-query-digest mit einem Fehler ab. Wenn die
Obwohl der Filtercode kompiliert wird, kann zur Laufzeit dennoch ein Fehler auftreten, wenn der Code dies versucht
Etwas stimmt nicht (z. B. Muster stimmt mit einem undefinierten Wert überein). pt-query-digest funktioniert nicht
Sorgen Sie für Sicherheitsvorkehrungen, also programmieren Sie sorgfältig!

Ein Beispielfilter, der alles außer SELECT-Anweisungen verwirft:

--filter '$event->{arg} =~ m/^select/i'

Dies wird in eine Unterroutine wie die folgende kompiliert:

sub { $event = shift; ( $event->{arg} =~ m/^select/i ) && return $event; }

Es ist zulässig, dass der Code Nebenwirkungen hat (um $event zu ändern).

Eine Liste allgemeiner und „--type“-spezifischer Attribute finden Sie unter „ATTRIBUTE-REFERENZ“.

Hier sind weitere Beispiele für Filtercode:

Host/IP stimmt mit domain.com überein
--filter '($event->{host} || $event->{ip} || "") =~ m/domain.com/'

Manchmal protokolliert MySQL den Host, auf dem die IP erwartet wird. Deshalb prüfen wir beides.

Benutzer stimmt mit John überein
--filter '($event->{user} || "") =~ m/john/'

Mehr als eine Warnung
--filter '($event->{Warning_count} || 0) > 1'

Die Abfrage führt einen vollständigen Tabellenscan oder einen vollständigen Join durch
--filter '(($event->{Full_scan} || "") eq "Ja") || (($event->{Full_join} || "")
eq „Ja“)'

Die Abfrage wurde nicht aus dem Abfragecache bedient
--filter '($event->{QC_Hit} || "") eq "Nein"'

Die Abfrage ist 1 MB oder größer
--filter '$event->{bytes} >= 1_048_576'

Da Sie mit „--filter“ $event ändern können, können Sie es für andere Dinge verwenden, z
neue Attribute erstellen. Ein Beispiel finden Sie unter „ATTRIBUTE“.

--gruppiere nach
Typ: Array; Standard: Fingerabdruck

Welches Attribut der Ereignisse, nach denen gruppiert werden soll.

Im Allgemeinen können Sie Abfragen basierend auf jedem Attribut der Abfrage in Klassen gruppieren.
B. „user“ oder „db“, die Ihnen standardmäßig anzeigen, welche Benutzer und welche Datenbanken vorhanden sind
Holen Sie sich die meiste „Query_time“. Das Standardattribut „Fingerabdruck“ gruppiert ähnliche,
abstrahierte Abfragen in Klassen; siehe unten und siehe auch „FINGERABDRÜCKE“.

Für jeden „--group-by“-Wert wird ein Bericht gedruckt (es sei denn, „--no-report“ ist angegeben).
Daher bedeutet „--group-by user,db“ „Bericht über Abfragen mit demselben Benutzer und Bericht“.
bei Abfragen mit derselben Datenbank“; es bedeutet nicht „Bericht über Abfragen mit demselben Benutzer“.
und db.“ Siehe auch „OUTPUT“.

Jeder Wert muss einen entsprechenden Wert an derselben Position in „--order-by“ haben.
Allerdings werden durch das Hinzufügen von Werten zu „--group-by“ automatisch Werte zu „--order-by“ hinzugefügt.
Für Ihren Komfort.

Es gibt mehrere magische Werte, die dazu führen, dass zuvor ein zusätzliches Data-Mining durchgeführt wird
Die Gruppierung erfolgt:

Fingerabdruck
Dadurch werden Ereignisse mit einem Fingerabdruck versehen, um Abfragen in eine kanonische Form zu abstrahieren.
die dann verwendet wird, um Ereignisse in einer Klasse zusammenzufassen. Siehe „FINGERABDRÜCKE“ für
mehr zum Thema Fingerabdruck.

Tabellen
Dies führt dazu, dass Ereignisse auf scheinbar Tabellen untersucht werden
dadurch aggregiert. Beachten Sie, dass eine Abfrage, die zwei oder mehr Tabellen enthält
wird so oft gezählt, wie es Tische gibt; Es zählt also ein Join gegen zwei Tische
die Query_time für beide Tabellen.

destillieren
Dabei handelt es sich um eine Art Super-Fingerabdruck, der Abfragen zu einem Vorschlag zusammenfasst
von dem, was sie tun, wie zum Beispiel „INSERT SELECT Tabelle1 Tabelle2“.

--help
Hilfe anzeigen und beenden.

--Geschichte
Typ: DSN

Speichern Sie Metriken für jede Abfrageklasse in der angegebenen Tabelle. pt-query-digest speichert die Abfrage
Fügen Sie dieser Tabelle Metriken (Abfragezeit, Sperrzeit usw.) hinzu, damit Sie sehen können, wie Klassen abgefragt werden
im Laufe der Zeit ändern.

Die Standardtabelle ist „percona_schema.query_history“. Geben Sie Datenbank (D) und Tabelle an
(t) DSN-Optionen zum Überschreiben der Standardeinstellung. Die Datenbank und die Tabelle werden automatisch erstellt
erstellt, sofern nicht „--no-create-history-table“ angegeben ist (siehe
„--[no]create-history-table“).

pt-query-digest überprüft die Spalten in der Tabelle. Die Tabelle muss mindestens das haben
folgende Spalten:

TABELLE ERSTELLEN query_review_history (
Prüfsumme BIGINT UNSIGNED NOT NULL,
Beispieltext NICHT NULL
);

Alle oben nicht erwähnten Spalten werden daraufhin überprüft, ob sie einer bestimmten Benennung folgen
Konvention. Die Spalte ist besonders, wenn der Name mit einem Unterstrich gefolgt von einem beliebigen endet
dieser Werte:

pct|avg|cnt|sum|min|max|pct_95|stddev|median|rank

Wenn die Spalte mit einem dieser Werte endet, wird das Präfix als interpretiert
Ereignisattribut, das in dieser Spalte gespeichert werden soll, und das Suffix wird als Metrik interpretiert
zu speichernden. Beispielsweise wird eine Spalte mit dem Namen „Query_time_min“ zum Speichern verwendet
minimale „Query_time“ für die Ereignisklasse.

Die Tabelle sollte auch einen Primärschlüssel haben, aber das bleibt Ihnen überlassen, je nachdem, wie Sie vorgehen
Sie möchten die historischen Daten speichern. Wir empfehlen, die Spalten ts_min und ts_max hinzuzufügen
Sie werden zusammen mit der Prüfsumme zum Bestandteil des Primärschlüssels. Aber man könnte auch einfach
Fügen Sie eine ts_min-Spalte hinzu und machen Sie daraus einen DATE-Typ, sodass Sie eine Zeile pro Abfrageklasse erhalten
pro Tag.

Die folgende Tabellendefinition wird für „--[no]create-history-table“ verwendet:

TABELLE ERSTELLEN, WENN NICHT EXISTIERT query_history (
Prüfsumme BIGINT UNSIGNED NOT NULL,
Beispieltext NICHT NULL,
ts_min DATETIME,
ts_max DATETIME,
ts_cnt FLOAT,
Query_time_sum FLOAT,
Query_time_min FLOAT,
Query_time_max FLOAT,
Query_time_pct_95 FLOAT,
Query_time_stddev FLOAT,
Query_time_median FLOAT,
Lock_time_sum FLOAT,
Lock_time_min FLOAT,
Lock_time_max FLOAT,
Lock_time_pct_95 FLOAT,
Lock_time_stddev FLOAT,
Lock_time_median FLOAT,
Rows_sent_sum FLOAT,
Rows_sent_min FLOAT,
Rows_sent_max FLOAT,
Rows_sent_pct_95 FLOAT,
Rows_sent_stddev FLOAT,
Rows_sent_median FLOAT,
Rows_examined_sum FLOAT,
Rows_examined_min FLOAT,
Rows_examined_max FLOAT,
Rows_examined_pct_95 FLOAT,
Rows_examined_stddev FLOAT,
Rows_examined_median FLOAT,
– Percona erweiterte Slowlog-Attribute
-- http://www.percona.com/docs/wiki/patches:slow_extended
Rows_affected_sum FLOAT,
Rows_affected_min FLOAT,
Rows_affected_max FLOAT,
Rows_affected_pct_95 FLOAT,
Rows_affected_stddev FLOAT,
Rows_affected_median FLOAT,
Rows_read_sum FLOAT,
Rows_read_min FLOAT,
Rows_read_max FLOAT,
Rows_read_pct_95 FLOAT,
Rows_read_stddev FLOAT,
Rows_read_median FLOAT,
Merge_passes_sum FLOAT,
Merge_passes_min FLOAT,
Merge_passes_max FLOAT,
Merge_passes_pct_95 FLOAT,
Merge_passes_stddev FLOAT,
Merge_passes_median FLOAT,
InnoDB_IO_r_ops_min FLOAT,
InnoDB_IO_r_ops_max FLOAT,
InnoDB_IO_r_ops_pct_95 FLOAT,
InnoDB_IO_r_ops_stddev FLOAT,
InnoDB_IO_r_ops_median FLOAT,
InnoDB_IO_r_bytes_min FLOAT,
InnoDB_IO_r_bytes_max FLOAT,
InnoDB_IO_r_bytes_pct_95 FLOAT,
InnoDB_IO_r_bytes_stddev FLOAT,
InnoDB_IO_r_bytes_median FLOAT,
InnoDB_IO_r_wait_min FLOAT,
InnoDB_IO_r_wait_max FLOAT,
InnoDB_IO_r_wait_pct_95 FLOAT,
InnoDB_IO_r_wait_stddev FLOAT,
InnoDB_IO_r_wait_median FLOAT,
InnoDB_rec_lock_wait_min FLOAT,
InnoDB_rec_lock_wait_max FLOAT,
InnoDB_rec_lock_wait_pct_95 FLOAT,
InnoDB_rec_lock_wait_stddev FLOAT,
InnoDB_rec_lock_wait_median FLOAT,
InnoDB_queue_wait_min FLOAT,
InnoDB_queue_wait_max FLOAT,
InnoDB_queue_wait_pct_95 FLOAT,
InnoDB_queue_wait_stddev FLOAT,
InnoDB_queue_wait_median FLOAT,
InnoDB_pages_distinct_min FLOAT,
InnoDB_pages_distinct_max FLOAT,
InnoDB_pages_distinct_pct_95 FLOAT,
InnoDB_pages_distinct_stddev FLOAT,
InnoDB_pages_distinct_median FLOAT,
-- Boolesche (Ja/Nein)-Attribute. Es werden nur cnt und sum benötigt
-- für diese. cnt gibt an, wie oft das Attribut aufgezeichnet wurde.
– und die Summe gibt an, wie oft der Wert „Ja“ war. Also
-- sum/cnt * 100 entspricht dem Prozentsatz der aufgezeichneten Zeiten
– Der Wert war „Ja“.
QC_Hit_cnt FLOAT,
QC_Hit_sum FLOAT,
Full_scan_cnt FLOAT,
Full_scan_sum FLOAT,
Full_join_cnt FLOAT,
Full_join_sum FLOAT,
Tmp_table_cnt FLOAT,
Tmp_table_sum FLOAT,
Tmp_table_on_disk_cnt FLOAT,
Tmp_table_on_disk_sum FLOAT,
Filesort_cnt FLOAT,
Filesort_sum FLOAT,
Filesort_on_disk_cnt FLOAT,
Filesort_on_disk_sum FLOAT,
PRIMÄRSCHLÜSSEL (Prüfsumme, ts_min, ts_max)
);

Beachten Sie, dass wir die Anzahl (cnt) nur für das ts-Attribut speichern; es wird überflüssig sein
Speichern Sie dies für andere Attribute.

--Gastgeber
Kurzform: -h; Typ: Zeichenfolge

Mit Host verbinden.

--ignore-attributes
Typ: Array; Standard: arg, cmd, insert_id, ip, port, Thread_id, Zeitstempel, exptime,
Flags, Schlüssel, res, val, server_id, offset, end_log_pos, Xid

Aggregieren Sie diese Attribute nicht. Bei einigen Attributen handelt es sich nicht um Abfragemetriken, sondern um Metadaten
die nicht aggregiert werden müssen (oder können).

--inherit-attributes
Typ: Array; Standard: db,ts

Wenn sie fehlen, erben Sie diese Attribute vom letzten Ereignis, bei dem sie vorhanden waren.

Diese Option legt fest, welche Attribute vererbt oder an Ereignisse übertragen werden, die dies tun
habe sie nicht. Wenn zum Beispiel ein Ereignis das db-Attribut gleich „foo“ hat, das
Wenn das nächste Ereignis nicht über das db-Attribut verfügt, erbt es „foo“ für sein db-Attribut.

--Intervall
Typ: Schwimmer; Standard: .1

Wie oft die Prozessliste abgefragt werden soll, in Sekunden.

--iterationen
Typ: int; Standard: 1

Wie oft muss der Erfassungs- und Berichtszyklus durchlaufen werden? Wenn 0, iterieren Sie zu
Unendlichkeit. Jede Iteration läuft für die Zeitspanne „--run-time“. Eine Iteration ist
Wird normalerweise durch eine Zeitspanne bestimmt und ein Bericht wird gedruckt, wenn diese Zeitspanne erreicht ist
Zeit vergeht. Mit „--run-time-mode“ „Intervall“ wird stattdessen ein Intervall bestimmt durch
die Intervallzeit, die Sie mit „--run-time“ angeben. Siehe „--run-time“ und
Weitere Informationen finden Sie unter „--run-time-mode“.

--Grenze
Typ: Array; Standard: 95 %:20

Begrenzen Sie die Ausgabe auf den angegebenen Prozentsatz oder die angegebene Anzahl.

Wenn das Argument eine ganze Zahl ist, melden Sie nur die obersten N schlechtesten Abfragen. Wenn das Argument
ist eine Ganzzahl, gefolgt vom Zeichen „%“. Geben Sie den Prozentsatz der schlechtesten Abfragen an.
Wenn auf den Prozentsatz ein Doppelpunkt und eine weitere Ganzzahl folgen, geben Sie den Anfang an
Prozentsatz oder die durch diese Ganzzahl angegebene Zahl, je nachdem, was zuerst eintritt.

Der Wert ist eigentlich ein durch Kommas getrenntes Array von Werten, einer für jedes Element in
"--gruppiere nach". Wenn Sie für keines dieser Elemente einen Wert angeben, ist der Standardwert der
Top 95 %.

Siehe auch „--outliers“.

--Protokoll
Typ: Zeichenfolge

Drucken Sie die gesamte Ausgabe in diese Datei, wenn sie dämonisiert ist.

--Sortieren nach
Typ: Array; Standard: Query_time:sum

Sortieren Sie Ereignisse nach diesem Attribut und dieser Aggregatfunktion.

Dies ist eine durch Kommas getrennte Liste von Order-By-Ausdrücken, einer für jedes „--group-by“.
Attribut. Der Standardwert „Query_time:sum“ wird für „--group-by“-Attribute ohne verwendet
explizit angegebene „--order-by“-Attribute (d. h. wenn Sie weitere „--group-by“-Attribute angeben)
Attribute als entsprechende „--order-by“-Attribute). Die Syntax ist
„Attribut:Aggregat“. Gültige Attribute finden Sie unter „ATTRIBUTE“. Gültige Aggregate sind:

Aggregierte Bedeutung
========= ===========================
sum Summe/Gesamtattributwert
min Minimaler Attributwert
max Maximaler Attributwert
cnt Häufigkeit/Anzahl der Abfrage

Der Standardwert „Query_time:sum“ bedeutet beispielsweise, dass Abfragen in der Abfrageanalyse durchgeführt werden
Der Bericht wird nach der gesamten Abfrageausführungszeit („Ausführungszeit“) sortiert (sortiert).
„Query_time:max“ ordnet die Abfragen nach ihrer maximalen Abfrageausführungszeit, also
Die Abfrage mit der größten Einzelanfrage „Query_time“ wird zuerst aufgeführt. „cnt“ bezieht sich eher auf
die Häufigkeit der gesamten Anfrage, wie oft sie erscheint; „Count“ ist es
entsprechende Zeile im Abfrageanalysebericht. Also jedes Attribut und „cnt“ sollten
denselben Bericht liefern, in dem Abfragen nach der Häufigkeit ihres Auftretens sortiert werden.

Beim Parsen allgemeiner Protokolle („--type“ „genlog“) wird der Standardwert „--order-by“ verwendet
„Query_time:cnt“. Allgemeine Protokolle melden keine Abfragezeiten, sondern nur das „cnt“-Aggregat
macht Sinn, da alle Abfragezeiten Null sind.

Wenn Sie ein Attribut angeben, das in den Ereignissen nicht vorhanden ist, dann pt-query-digest
greift auf den Standardwert „Query_time:sum“ zurück und gibt am Anfang einen Hinweis aus
Bericht für jede Abfrageklasse. Sie können Attribute mit „--filter“ erstellen und nach sortieren
ihnen; Ein Beispiel finden Sie unter „ATTRIBUTE“.

--Ausreißer
Typ: Array; Standard: Abfragezeit:1:10

Ausreißer nach Attribut:Perzentil:Anzahl melden.

Die Syntax dieser Option ist eine durch Kommas getrennte Liste von durch Doppelpunkte getrennten Zeichenfolgen. Der
Das erste Feld ist das Attribut, durch das ein Ausreißer definiert wird. Die zweite ist eine Zahl
Dies wird mit dem 95. Perzentil des Attributs verglichen. Der dritte ist optional und ist es auch
im Vergleich zum cnt-Aggregat des Attributs. Abfragen, die diese Spezifikation erfüllen, sind
dem Bericht hinzugefügt, unabhängig von etwaigen Grenzwerten, die Sie in „--limit“ angegeben haben.

Beispielsweise zum Melden von Abfragen, deren 95. Perzentil Query_time mindestens 60 Sekunden beträgt
und die mindestens fünfmal gesehen werden, verwenden Sie das folgende Argument:

--outliers Abfragezeit:60:5

Sie können für jeden Wert in „--group-by“ eine Option „--outliers“ angeben.

--Ausgabe
Typ: Zeichenfolge; Standard: Bericht

So formatieren und drucken Sie die Ergebnisse der Abfrageanalyse. Akzeptierte Werte sind:

WERTEFORMAT
======= =============================
Bericht Standardbericht zur Abfrageanalyse
Slowlog MySQL Slowlog
json JSON, auf Array pro Abfrageklasse
json-anon JSON ohne Beispielabfragen

Die gesamte „report“-Ausgabe kann durch Angabe von „--no-report“ deaktiviert werden (siehe
„--[no]report“), und seine Abschnitte können durch Angabe deaktiviert oder neu angeordnet werden
"--Berichtsformat".

Die „json“-Ausgabe wurde in 2.2.1 eingeführt und befindet sich noch in der Entwicklung, so die Daten
Die Struktur kann sich in zukünftigen Versionen ändern.

--Passwort
Kurzform: -p; Typ: Zeichenfolge

Passwort für die Verbindung. Wenn das Passwort Kommas enthält, müssen diese maskiert werden
mit Backslash: "exam\,ple"

--pid
Typ: Zeichenfolge

Erstellen Sie die angegebene PID-Datei. Das Tool startet nicht, wenn die PID-Datei bereits vorhanden ist und
die darin enthaltene PID unterscheidet sich von der aktuellen PID. Wenn jedoch die PID-Datei
existiert und die darin enthaltene PID nicht mehr ausgeführt wird, überschreibt das Tool die PID
Datei mit der aktuellen PID. Die PID-Datei wird beim Beenden des Tools automatisch entfernt.

--Hafen
Kurzform: -P; Typ: int

Portnummer, die für die Verbindung verwendet werden soll.

--processlist
Typ: DSN

Fragen Sie die Prozessliste dieses DSN nach Abfragen ab, mit „--interval“ Ruhepausen dazwischen.

Wenn die Verbindung fehlschlägt, versucht pt-query-digest einmal pro Sekunde, sie erneut zu öffnen.

--Fortschritt
Typ: Array; Standard: Zeit, 30

Drucken Sie Fortschrittsberichte an STDERR. Der Wert ist eine durch Kommas getrennte Liste mit zwei Teilen.
Der erste Teil kann Prozentsatz, Zeit oder Iterationen sein; Der zweite Teil gibt an, wie
Oft sollte eine Aktualisierung in Prozent, Sekunden oder Anzahl der Iterationen gedruckt werden.

--read-timeout
Typ: Zeit; Standard: 0

Warten Sie so lange auf ein Ereignis von der Eingabe; 0, um ewig zu warten.

Diese Option legt die maximale Zeit fest, die auf ein Ereignis vom Eingang gewartet werden soll. Es gilt für
alle Arten von Eingaben außer „--processlist“. Wenn ein Ereignis nach dem nicht empfangen wird
Nach Ablauf der angegebenen Zeit stoppt das Skript das Lesen der Eingabe und druckt seine Berichte. Wenn
„--iterations“ ist 0 oder größer als 1, die nächste Iteration beginnt, andernfalls das Skript
wird aussteigen.

Diese Option erfordert das Perl POSIX-Modul.

--[kein] Bericht
Standard: ja

Drucken Sie Abfrageanalyseberichte für jedes „--group-by“-Attribut. Das ist der Standard
langsame Protokollanalysefunktion. Eine Beschreibung dessen, was dies bewirkt, finden Sie unter „OUTPUT“.
und wie die Ergebnisse aussehen.

Wenn Sie keinen Bericht benötigen (z. B. bei Verwendung von „--review“ oder „--history“), ist dies der Fall
Geben Sie am besten „--no-report“ an, da das Tool dadurch einige teure Informationen überspringen kann
Operationen.

--report-all
Melden Sie alle Anfragen, auch solche, die überprüft wurden. Dies betrifft nur den „Bericht“
„--output“ bei Verwendung von „--review“. Ansonsten werden immer alle Abfragen gedruckt.

--Berichtsformat
Typ: Array; Standard: rusage,date,hostname,files,header,profile,query_report,prepared

Drucken Sie diese Abschnitte des Abfrageanalyseberichts.

ABSCHNITT DRUCKE
============ ==================================== ================
Von ps gemeldete CPU-Zeiten und Speichernutzung
Datum Aktuelles lokales Datum und Uhrzeit
Hostname Hostname der Maschine, auf der pt-query-digest ausgeführt wurde
Dateien Eingabedateien lesen/analysieren
header Zusammenfassung des gesamten Analyselaufs
Profil Kompakte Abfragetabelle für einen Überblick über den Bericht
query_report Detaillierte Informationen zu jeder einzelnen Abfrage
vorbereitete vorbereitete Aussagen

Die Abschnitte werden in der angegebenen Reihenfolge gedruckt. Der Sprachgebrauch, das Datum, die Dateien und der Header
Abschnitte werden zusammen gruppiert, wenn sie zusammen angegeben werden. andere Abschnitte werden durch getrennt
Leerzeilen.

Weitere Informationen zu den verschiedenen Teilen des Abfrageberichts finden Sie unter „OUTPUT“.

--report-histogramm
Typ: Zeichenfolge; Standard: Abfragezeit

Zeichnen Sie die Verteilung der Werte dieses Attributs auf.

Das Verteilungsdiagramm ist auf zeitbasierte Attribute, also Diagramme, beschränkt
„Rows_examined“ erzeugt beispielsweise ein nutzloses Diagramm. Diagramme sehen so aus:

# Query_time-Verteilung
# 1uns
# 10uns
# 100uns
# 1ms
# 10ms ##########################
# 100ms ############################################# ########
# 1s ########
# 10s+

Weitere Informationen finden Sie unter „AUSGANG“.

--Lebenslauf
Typ: Zeichenfolge

Wenn angegeben, schreibt das Tool den letzten Dateioffset, falls vorhanden, in die angegebene Datei
Dateiname. Bei erneuter Ausführung mit demselben Wert für diese Option liest das Tool den letzten
Dateioffset von der Datei, sucht nach dieser Position im Protokoll und setzt die Analyse fort
Ereignisse von diesem Zeitpunkt an.

--Rezension
Typ: DSN

Speichern Sie Abfrageklassen zur späteren Überprüfung und melden Sie keine bereits überprüften Klassen.

Die Standardtabelle ist „percona_schema.query_review“. Geben Sie Datenbank (D) und Tabelle an
(t) DSN-Optionen zum Überschreiben der Standardeinstellung. Die Datenbank und die Tabelle werden automatisch erstellt
erstellt, sofern nicht „--no-create-review-table“ angegeben ist (siehe
„--[no]create-review-table“).

Wenn die Tabelle manuell erstellt wurde, muss sie mindestens die folgenden Spalten enthalten. Du
Sie können weitere Spalten für Ihre eigenen speziellen Zwecke hinzufügen, diese werden jedoch nicht von pt- verwendet.
Abfrage-Digest.

TABELLE ERSTELLEN, WENN SIE NICHT EXISTIERT query_review (
Prüfsumme BIGINT UNSIGNED NOT NULL PRIMARY KEY,
Fingerabdrucktext NICHT NULL,
Beispieltext NICHT NULL,
first_seen DATETIME,
last_seen DATETIME,
rezensiert von VARCHAR(20)
überprüft_am DATETIME,
Kommentare TEXT
)

Die Spalten sind:

SPALTENBEDEUTUNG
=========== ===================================== =============
Prüfsumme Eine 64-Bit-Prüfsumme des Abfragefingerabdrucks
Fingerabdruck Die abstrahierte Version der Abfrage; sein Primärschlüssel
Beispiel Der Abfragetext einer Stichprobe der Abfrageklasse
first_seen Der kleinste Zeitstempel dieser Abfrageklasse
last_seen Der größte Zeitstempel dieser Abfrageklasse
reviewed_by Ursprünglich NULL; Wenn festgelegt, wird die Abfrage danach übersprungen
reviewed_on Ursprünglich NULL; keine besondere Bedeutung zugewiesen
Kommentare Anfangs NULL; keine besondere Bedeutung zugewiesen

Beachten Sie, dass die Spalte „Fingerabdruck“ der wahre Primärschlüssel für eine Klasse von Abfragen ist.
Die „Prüfsumme“ ist lediglich ein kryptografischer Hash dieses Wertes, der eine kürzere Zeitspanne liefert
Wert, der mit hoher Wahrscheinlichkeit auch einzigartig ist.

Nach dem Parsen und Aggregieren der Ereignisse sollte Ihre Tabelle jeweils eine Zeile enthalten
Fingerabdruck. Diese Option hängt von „--group-by Fingerprint“ ab (was die Standardeinstellung ist).
Sonst wird es nicht funktionieren.

--Laufzeit
Typ: Zeit

Wie lange die einzelnen „--iterations“ ausgeführt werden sollen. Die Standardeinstellung ist die ewige Ausführung (Sie können dies tun).
mit STRG-C unterbrechen). Weil „--iterations“ standardmäßig 1 ist, wenn Sie nur angeben
„--run-time“, pt-query-digest wird für diese Zeitspanne ausgeführt und dann beendet. Die Zwei
Optionen werden zusammen angegeben, um Sammel- und Berichtszyklen durchzuführen. Zum Beispiel,
Angabe von „--iterations“ 4 „--run-time“ „15m“ mit einer kontinuierlichen Eingabe (wie STDIN oder
„--processlist“) führt dazu, dass pt-query-digest 1 Stunde lang (15 Minuten x 4) läuft.
viermal Bericht erstatten, einmal alle 15 Minuten.

--run-time-mode
Typ: Zeichenfolge; Standard: Uhr

Legen Sie fest, worauf der Wert von „--run-time“ wirkt. Im Folgenden sind die möglichen Werte für aufgeführt
diese Option:

Uhr
„--run-time“ gibt die tatsächliche Taktzeit an, die das Tool ausführen soll
für jedes „--iterations“ ausführen.

Event
„--run-time“ gibt eine Protokollzeit an. Die Protokollzeit wird bestimmt durch
Zeitstempel im Protokoll. Der erste gesehene Zeitstempel wird gespeichert, und zwar jeder Zeitstempel
Danach wird mit der ersten verglichen, um festzustellen, wie viel Protokollzeit vergangen ist.
Wenn beispielsweise der erste gesehene Zeitstempel „12:00:00“ und der nächste „12:01:30“ ist,
das sind 1 Minute und 30 Sekunden Protokollzeit. Das Tool liest Ereignisse bis zum
Die Protokollzeit ist größer oder gleich dem angegebenen „--run-time“-Wert.

Da Zeitstempel in Protokollen nicht immer oder nicht immer häufig gedruckt werden,
Dieser Modus variiert in der Genauigkeit.

Intervall
„--run-time“ gibt Intervallgrenzen der Protokollzeit an, in denen Ereignisse liegen
aufgeteilt und Berichte erstellt. Dieser Modus unterscheidet sich von den anderen, weil
Es wird nicht angegeben, wie lange die Ausführung dauern soll. Der Wert von „--run-time“ muss ein Intervall sein
die sich gleichmäßig in Minuten, Stunden oder Tage aufteilt. Beispiel: „5 m“ teilt sich gleichmäßig auf
in Stunden (60/5=12, also 12 5-Minuten-Intervalle pro Stunde), bei „7m“ jedoch nicht
(60/7=8.6).

Die Angabe von „--run-time-mode Intervall --run-time 30m --iterations 0“ ähnelt
Angabe von „--run-time-mode clock --run-time 30m –iterations 0“. In Letzterem
In diesem Fall läuft pt-query-digest ewig und erstellt alle 30 Minuten Berichte, aber
Dies funktioniert nur effektiv mit kontinuierlichen Eingaben wie STDIN und dem
Prozessliste. Für feste Eingaben wie Protokolldateien erzeugt das vorherige Beispiel
mehrere Berichte durch Unterteilung des Protokolls in 30-Minuten-Intervalle basierend auf
Zeitstempel.

Intervalle werden ab der nullten Sekunde/Minute/Stunde berechnet, in der ein Zeitstempel vorliegt
auftritt, nicht ab dem angegebenen Zeitpunkt. Zum Beispiel mit 30 Minuten
Intervalle und einen Zeitstempel von „12:10:30“, das Intervall ist nicht „12:10:30“ bis
„12:40:30“, es ist „12:00:00“ bis „12:29:59“. Oder, mit 1-Stunden-Intervallen, ist es so
„12:00:00“ bis „12:59:59“. Wenn ein neuer Zeitstempel das Intervall überschreitet, wird ein Bericht erstellt
gedruckt und das nächste Intervall wird basierend auf dem neuen Zeitstempel neu berechnet.

Da „--iterations“ standardmäßig 1 ist, möchten Sie wahrscheinlich einen neuen Wert angeben
Andernfalls ruft pt-query-digest nur das erste Intervall aus dem Protokoll ab und meldet es
da 1 Intervall = 1 Iteration. Wenn Sie jedes Intervall in einem abrufen und melden möchten
log, geben Sie „--iterations“ 0 an.

--Stichprobe
Typ: int

Filtern Sie alle bis auf die ersten N Vorkommen jeder Abfrage heraus. Die Abfragen werden gefiltert
der erste Wert in „--group-by“, daher wird standardmäßig nach dem Fingerabdruck der Abfrage gefiltert.
Beispielsweise ermöglicht „--sample 2“ zwei Probenabfragen für jeden Fingerabdruck. Nützlich
in Verbindung mit „--output slowlog“, um die Abfragen auszudrucken. Sie möchten wahrscheinlich festlegen
„--no-report“, um den Aufwand für die Aggregation und Berichterstellung zu vermeiden, wenn Sie nur verwenden
Hiermit können Sie Beispiele für Abfragen ausdrucken. Ein vollständiges Beispiel:

pt-query-digest --sample 2 --no-report --output slowlog slow.log

--set-vars
Typ: Array

Legen Sie die MySQL-Variablen in dieser durch Kommas getrennten Liste von "variable=value"-Paaren fest.

Standardmäßig sind die Werkzeugsätze:

wait_timeout=10000

In der Befehlszeile angegebene Variablen überschreiben diese Standardwerte. Zum Beispiel,
Die Angabe von "--set-vars wait_timeout=500" überschreibt den Standardwert von 10000.

Das Tool druckt eine Warnung und fährt fort, wenn eine Variable nicht gesetzt werden kann.

--zeige alles
Typ: Hash

Alle Werte für diese Attribute anzeigen.

Standardmäßig zeigt pt-query-digest nur so viele Werte eines Attributs an, die auf a passen
einzelne Zeile. Mit dieser Option können Sie Attribute angeben, für die alle Werte gelten
angezeigt werden (Linienbreite wird ignoriert). Dies funktioniert nur für Attribute mit Zeichenfolgewerten
wie Benutzer, Host, Datenbank usw. Es können mehrere Attribute durch Kommas getrennt angegeben werden.

--schon seit
Typ: Zeichenfolge

Analysieren Sie nur Abfragen, die neuer als dieser Wert sind (Analysieren Sie Abfragen seit diesem Datum).

Mit dieser Option können Sie Abfragen, die älter als ein bestimmter Wert sind, ignorieren und nur analysieren
diejenigen Abfragen, die aktueller sind als der Wert. Der Wert kann verschiedene Typen haben:

* Einfacher Zeitwert N mit optionalem Suffix: N[shmd], wobei
s=Sekunden, h=Stunden, m=Minuten, d=Tage (Standard s, wenn kein Suffix vorhanden ist
gegeben); das ist, als würde man sagen „seit N[shmd] vor“
* Vollständiges Datum mit optionalen Stunden:Minuten:Sekunden:
JJJJ-MM-TT [HH:MM::SS]
* Kurzes Datum im MySQL-Stil:
JJMMTT [HH:MM:SS]
* Jeder von MySQL ausgewertete Zeitausdruck:
CURRENT_DATE – INTERVALL 7 TAGE

Wenn Sie einen MySQL-Zeitausdruck angeben und nicht auch einen DSN für angegeben haben
„--explain“, „--processlist“ oder „--review“, dann müssen Sie einen DSN angeben
Befehlszeile, damit pt-query-digest eine Verbindung zu MySQL herstellen kann, um den Ausdruck auszuwerten.

Der MySQL-Zeitausdruck ist in eine Abfrage wie „SELECT“ eingeschlossen
UNIX_TIMESTAMP( )“, also stellen Sie sicher, dass der Ausdruck darin gültig ist
Abfrage. Zum Beispiel nicht verwenden UNIX_TIMESTAMP() weil
UNIX_TIMESTAMP(UNIX_TIMESTAMP()) gibt 0 zurück.

Es wird davon ausgegangen, dass die Ereignisse chronologisch sind: ältere Ereignisse am Anfang des Protokolls
und neuere Ereignisse am Ende des Protokolls. „--since“ ist streng: Es ignoriert alle Abfragen
bis einer gefunden wird, der neu genug ist. Daher sind die Abfrageereignisse nicht vorhanden
Durchgehend mit einem Zeitstempel versehen, können einige ignoriert werden, die tatsächlich neu genug sind.

Siehe auch „--until“.

--Steckdose
kurz Formen; Typ: Zeichenfolge

Socket-Datei, die für die Verbindung verwendet werden soll.

--Zeitleiste
Zeigen Sie eine Zeitleiste der Ereignisse an.

Diese Option bewirkt, dass pt-query-digest eine andere Art von Bericht ausgibt: eine Zeitleiste des
Veranstaltungen. Jede Abfrage wird weiterhin gruppiert und in Klassen zusammengefasst
„--group-by“, aber dann werden sie in chronologischer Reihenfolge gedruckt. Der Timeline-Bericht
Gibt den Zeitstempel, das Intervall, die Anzahl und den Wert jeder Klasse aus.

Wenn Sie lediglich den Zeitleistenbericht benötigen, geben Sie „--no-report“ an, um den zu unterdrücken
Standardbericht zur Abfrageanalyse. Andernfalls wird der Zeitleistenbericht am ausgedruckt
endet vor dem Antwortzeitprofil (siehe „--report-format“ und „OUTPUT“).

Zum Beispiel:

pt-query-digest /path/to/log --group-by destillieren --timeline

druckt so etwas wie:

# ############################################## #######
# Bericht destillieren
# ############################################## #######
# 2009-07-25 11:19:27 1+00:00:01 2 SELECT foo
# 2009 07:27:11 19:30 00 SELECT-Leiste
# 2009-07-27 11:30:00 1+06:30:00 2 SELECT foo

--Typ
Typ: Array; Standard: Slowlog

Der Typ der zu analysierenden Eingabe. Die zulässigen Typen sind

binlog
Analysieren Sie eine binäre Protokolldatei, die zuvor mit mysqlbinlog in Text konvertiert wurde.

Beispielsweise:

mysqlbinlog mysql-bin.000441 > mysql-bin.000441.txt

pt-query-digest --type binlog mysql-bin.000441.txt

Genlog
Analysieren Sie eine allgemeine MySQL-Protokolldatei. In allgemeinen Protokollen fehlen insbesondere viele „ATTRIBUTE“.
„Query_time“. Der Standardwert „--order-by“ für allgemeine Protokolle ändert sich in
„Query_time:cnt“.

Slowlog
Analysieren Sie eine Protokolldatei in einer beliebigen Variante des langsamen MySQL-Protokollformats.

tcpdump
Untersuchen Sie Netzwerkpakete, dekodieren Sie das MySQL-Client-Protokoll und extrahieren Sie Abfragen
und Antworten daraus.

pt-query-digest überwacht das Netzwerk nicht wirklich (d. h. es „schnüffelt“ NICHT
Pakete"). Stattdessen wird lediglich die Ausgabe von tcpdump analysiert. Sie sind dafür verantwortlich
zum Generieren dieser Ausgabe; pt-query-digest erledigt das nicht für Sie. Dann senden Sie
Dies zu pt-query-digest wie jede Protokolldatei: als Dateien auf der Befehlszeile oder
zu STDIN.

Der Parser erwartet, dass die Eingabe mit den folgenden Optionen formatiert ist: „-x -n -q
-tttt". Wenn Sie beispielsweise die Ausgabe von Ihrem lokalen Computer erfassen möchten, müssen Sie
kann etwa Folgendes tun (der Port muss unter FreeBSD an letzter Stelle stehen):

tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 Port 3306 \
> mysql.tcp.txt
pt-query-digest --type tcpdump mysql.tcp.txt

Die anderen TCPdump-Parameter wie -s, -c und -i sind Ihnen überlassen. Mach einfach
Stellen Sie sicher, dass die Ausgabe so aussieht (es gibt einen Zeilenumbruch in der ersten Zeile, den Sie vermeiden sollten).
Manpage-Probleme):

2009-04-12 09:50:16.804849 IP 127.0.0.1.42167
> 127.0.0.1.3306: TCP 37
0x0000: 4508 0059 6eb2 4000 4006 cde2 7f00 0001
0x0010: ....

Denken Sie daran, dass tcpdump über eine praktische Option -c verfügt, mit der es angehalten werden kann, nachdem es eine bestimmte Anzahl erfasst hat
Pakete! Das ist sehr nützlich zum Testen Ihres tcpdump-Befehls. Beachten Sie, dass tcpdump
Der Datenverkehr auf einem Unix-Socket kann nicht erfasst werden. Lesen
<http://bugs.mysql.com/bug.php?id=31577>, wenn Sie diesbezüglich verwirrt sind.

Devananda Van Der Veen erklärte im MySQL Performance Blog, wie man erfasst
Datenverkehr, ohne dass Pakete auf ausgelasteten Servern verloren gehen. Verworfene Pakete verursachen pt-query-
Digest, um die Antwort auf eine Anfrage zu verpassen und dann die Antwort auf eine spätere Anfrage anzuzeigen
und weisen Sie der Abfrage die falsche Ausführungszeit zu. Sie können den Filter ändern
Etwas wie das Folgende, um eine Teilmenge der Abfragen zu erfassen. (Sehen
<http://www.mysqlperformanceblog.com/?p=6092> für Details.)

tcpdump -i any -s 65535 -x -n -q -tttt \
'Port 3306 und TCP[1] & 7 == 2 und TCP[3] & 7 == 2'

Alle MySQL-Server, die auf Port 3306 laufen, werden im tcpdump automatisch erkannt
Ausgabe. Wenn also der TCP-Dump-Ausgang Pakete von mehreren Servern enthält
Port 3306 (z. B. 10.0.0.1:3306, 10.0.0.2:3306 usw.), alle Pakete/Abfragen
von allen diesen Servern werden zusammen analysiert, als ob sie ein einziger Server wären.

Wenn Sie den Datenverkehr für einen MySQL-Server analysieren, der nicht auf Port 3306 ausgeführt wird,
siehe „--watch-server“.

Beachten Sie außerdem, dass pt-query-digest die Datenbank möglicherweise nicht für Abfragen meldet, wenn
Analysieren der tcpdump-Ausgabe. Die Datenbank wird nur bei der ersten Verbindung erkannt
Veranstaltungen für einen neuen Kunden oder wann wird ausgeführt. Wenn die tcpdump-Ausgabe
Enthält keines davon, kann pt-query-digest die Datenbank nicht erkennen.

Serverseitig vorbereitete Anweisungen werden unterstützt. SSL-verschlüsselter Datenverkehr ist nicht möglich
untersucht und entschlüsselt.

Rohprotokoll
Rohprotokolle sind keine MySQL-Protokolle, sondern einfache Textdateien mit einer SQL-Anweisung pro Zeile.
mögen:

SELECT c VON t WO id=1
/* Hallo Welt! */ SELECT * FROM t2 LIMIT 1
INTO t (a, b) VALUES ('foo', 'bar') EINFÜGEN
INSERT INTO t SELECT * FROM Monkeys

Da Rohprotokolle keine Metriken haben, sind viele Optionen und Funktionen von pt-query-
Digest funktioniert bei ihnen nicht.

Ein Anwendungsfall für Rohprotokolle ist das Ordnen von Abfragen nach Anzahl, wenn die einzigen Informationen vorliegen
Verfügbar ist eine Liste von Abfragen, beispielsweise aus der Abfrage „SHOW PROCESSLIST“.

--bis um
Typ: Zeichenfolge

Analysieren Sie nur Abfragen, die älter als dieser Wert sind (Analysieren Sie Abfragen bis zu diesem Datum).

Mit dieser Option können Sie Abfragen, die neuer als ein bestimmter Wert sind, ignorieren und nur analysieren
diejenigen Abfragen, die älter als der Wert sind. Der Wert kann von demselben Typ sein
aufgeführt für „--since“.

Im Gegensatz zu „--since“ ist „--until“ nicht streng: Alle Abfragen werden analysiert, bis eine gefunden wird
Zeitstempel, der gleich oder größer als „--until“ ist. Dann sind alle nachfolgenden Abfragen
ignoriert.

--Benutzer
Kurzform: -u; Typ: Zeichenfolge

Benutzer für die Anmeldung, wenn nicht aktueller Benutzer.

--variationen
Typ: Array

Geben Sie die Anzahl der Variationen in den Werten dieser Attribute an.

Variationen zeigen, wie viele unterschiedliche Werte ein Attribut innerhalb einer Klasse hatte. Das Übliche
Der Wert für diese Option ist „arg“, der angibt, wie viele verschiedene Abfragen enthalten waren
Klasse. Dies kann nützlich sein, um die Cachefähigkeit einer Abfrage zu bestimmen.

Eindeutige Werte werden durch CRC32-Prüfsummen der Attributwerte bestimmt. Diese
Prüfsummen werden im Abfragebericht für die durch diese Option angegebenen Attribute gemeldet.
mögen:

# arg crc 109 (1/25 %), 144 (1/25 %)... 2 weitere

In dieser Klasse gab es vier verschiedene Abfragen. Die Prüfsummen der ersten beiden
Es werden Variationen angezeigt, die jeweils einmal (oder in 25 % der Fälle) auftraten.

Bei der Anzahl der verschiedenen Variationen handelt es sich um Näherungswerte, da es sich nur um 1,000 Variationen handelt
Gerettet. Der Mod (%) 1000 der vollständigen CRC32-Prüfsumme wird gespeichert, also einige eindeutig
Prüfsummen werden als gleich behandelt.

--Version
Version anzeigen und beenden.

--[no]Versionsprüfung
Standard: ja

Suchen Sie nach der neuesten Version von Percona Toolkit, MySQL und anderen Programmen.

Dies ist eine Standardfunktion "Automatisch nach Updates suchen" mit zwei zusätzlichen
Merkmale. Zuerst prüft das Tool die Version anderer Programme auf dem lokalen System in
zusätzlich zu einer eigenen Version. Zum Beispiel überprüft es die Version jedes MySQL-Servers
es verbindet sich mit Perl und dem Perl-Modul DBD::mysql. Zweitens prüft es und warnt
über Versionen mit bekannten Problemen. MySQL 5.5.25 hatte beispielsweise einen kritischen Fehler und
wurde als 5.5.25a wiederveröffentlicht.

Alle Aktualisierungen oder bekannten Probleme werden vor der normalen Ausgabe des Tools an STDOUT ausgegeben.
Diese Funktion sollte niemals den normalen Betrieb des Werkzeugs beeinträchtigen.

Für weitere Informationen besuchen Sie .

--watch-server
Typ: Zeichenfolge

Diese Option teilt pt-query-digest mit, welche Server-IP-Adresse und welcher Port (wie
„10.0.0.1:3306“) zum Beobachten beim Parsen von tcpdump (für „--type“ tcpdump); alle anderen
Server werden ignoriert. Wenn Sie es nicht angeben, überwacht pt-query-digest alle Server nach
Suche nach einer beliebigen IP-Adresse über Port 3306 oder „MySQL“. Wenn Sie einen Server beobachten
Bei einem nicht standardmäßigen Port funktioniert dies nicht, daher müssen Sie die IP-Adresse und den Port angeben
beobachten.

Wenn Sie eine Mischung aus Servern sehen möchten, von denen einige auf dem Standardport 3306 und einige laufen
auf nicht standardmäßigen Ports ausgeführt werden, müssen Sie separate tcpdump-Ausgaben für die
Server mit nicht standardmäßigen Ports und geben Sie diese Option dann für jeden an. Derzeit pt-query-
Digest kann Server auf Port 3306 nicht automatisch erkennen und kann auch nicht angewiesen werden, einen Server auf einem zu überwachen
nicht standardmäßiger Port.

dsn OPTIONAL


Diese DSN-Optionen werden verwendet, um einen DSN zu erstellen. Jede Option wird wie "option=value" angegeben.
Bei den Optionen muss die Groß-/Kleinschreibung beachtet werden, sodass P und p nicht dieselbe Option sind. Es kann nicht sein
Leerzeichen vor oder nach dem "=" und wenn der Wert Leerzeichen enthält, muss er in Anführungszeichen gesetzt werden.
DSN-Optionen sind durch Kommas getrennt. Ausführliche Informationen finden Sie auf der percona-toolkit-Manpage.

· EIN

dsn: Zeichensatz; kopieren: ja

Standardzeichensatz.

· D

dsn: Datenbank; kopieren: ja

Standarddatenbank, die beim Herstellen einer Verbindung zu MySQL verwendet wird.

· F.

dsn: mysql_read_default_file; kopieren: ja

Liest nur Standardoptionen aus der angegebenen Datei.

· H

dsn: host; kopieren: ja

Mit Host verbinden.

· P

dsn: Passwort; kopieren: ja

Passwort für die Verbindung. Wenn das Passwort Kommas enthält, müssen diese maskiert werden
mit Backslash: "exam\,ple"

· P.

dsn: port; kopieren: ja

Portnummer, die für die Verbindung verwendet werden soll.

· S

dsn: mysql_socket; kopieren: ja

Socket-Datei, die für die Verbindung verwendet werden soll.

· T

Die Tabelle „--review“ oder „--history“.

· du

dsn: Benutzer; kopieren: ja

Benutzer für die Anmeldung, wenn nicht aktueller Benutzer.


Die Umgebungsvariable "PTDEBUG" ermöglicht die ausführliche Debugging-Ausgabe an STDERR. Ermöglichen
Debuggen und die gesamte Ausgabe in eine Datei erfassen, führen Sie das Tool wie folgt aus:

PTDEBUG=1 pt-query-digest ... > DATEI 2>&1

Seien Sie vorsichtig: Die Debug-Ausgabe ist umfangreich und kann mehrere Megabyte an Ausgabe erzeugen.

SYSTEM VORAUSSETZUNGEN


Sie benötigen Perl, DBI, DBD::mysql und einige Kernpakete, die in jedem installiert werden sollten
relativ neue Version von Perl.

Verwenden Sie pt-query-digestp online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad




×
Werbung
❤ ️Hier einkaufen, buchen oder kaufen – kostenlos, damit die Dienste kostenlos bleiben.