19 Stimmen

Wie kann "Zeitstempel setzen" eine langsame Abfrage sein?

Mein langsames Abfrageprotokoll ist voll von Einträgen wie dem folgenden:

# Query_time: 1.016361  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1273826821;
COMMIT;

Ich denke, die set timestamp Befehl wird von der Replikation ausgegeben, aber ich verstehe nicht, wie set timestamp kann mehr als eine Sekunde dauern. Haben Sie eine Idee, wie man das beheben kann?

19voto

newtover Punkte 29616

Timestamp ist ein Datentyp und eine eingebaute Funktion in MySQL. Was wollen Sie mit der folgenden Anweisung erreichen?

SET timestamp=1273826821;

UPD : Es tut mir leid, ich wusste nichts von den verwendeten MySQL-Hacks.

Es scheint, dass SET TIMESTAMP wird verwendet als Lösung, um einige Abfragen aus dem langsamen Protokoll auszuschließen .

Der OP verwendet die Microslow-Patch um die Statistikinformationen im langsamen Abfrageprotokoll zu verbessern, und die Anweisung ist vor Anweisungen für InnoDB-Tabellen üblich.

Die Antwort auf die Frage von OP lautet also, dass die COMMIT Anweisung ist die langsame Abfrage und nicht die SET TIMESTAMP .

11voto

samuel Punkte 379

Set timestamp erscheint in jedem Protokoll der langsamen Abfrage, also überspringen Sie diese Zeile; commit ist der Grund, warum sie in der langsamen Abfrage erscheint;

Da so viele Übertragungen in das langsame Protokoll kamen, kann die IO des Datenbankrechners das Problem sein, da die IO der Engpass für Übertragungen ist.

Überwachen Sie den Wert für die IO-Wartezeit der DB-CPU, der nicht höher als 1/Anzahl der Kerne sein darf. Zum Beispiel, wenn 8 Kerne, IO warten sollte weniger als 12%.

iotop kann verwendet werden, um herauszufinden, welcher Prozess IO liest/schreibt, und iostat kann verwendet werden, um IO zu überwachen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X