2014-01-20 6 views
11

Nachdem in MySQLWie MySQL-Abfrage löschen Profile

SET profiling=1; 

ich wie eine Abfrage wie SELECT NOW(); laufen und sehen, mit Profil Ergebnisse auf Profilierung Drehen Ausführungszeit ist mit: Allerdings

SHOW PROFILES; 

, I kann nicht herausfinden, wie man die Profilauflistung löscht. Wer kennt die Aussage, alte Profildaten zu löschen? SET profiling=0; deaktiviert nur die Protokollierung neuer Daten und entfernt keine alten Statistiken.

Antwort

10

Um vorherige Abfrageprofile zu löschen, setzen Sie @@profiling_history_size=0. Der folgende Ausschnitt löscht die Profile, setzt die Geschichte auf seine maximale Größe und ermöglicht Profilierungs

SET @@profiling = 0; 
SET @@profiling_history_size = 0; 
SET @@profiling_history_size = 100; 
SET @@profiling = 1; 

auf 5.6.17 getestet

+1

Dadurch werden die vorherigen Abfragen entfernt, die ID für die automatische Inkrementierung wird jedoch nicht zurückgesetzt. Ich möchte die Abfrage-ID in meinem Debugging nicht aktualisieren müssen, aber ich habe keine (oder willige) Erlaubnis, ein ALTER TABLE PROFILING AUTO_INCREMENT = 1; auszugeben - gibt es eine andere Möglichkeit, es zurückzusetzen? Danke (und ich habe versucht, profiling_history_size = 1) – scipilot

+0

, wenn Sie in einem MySQL-Editor können Sie eine Abfrage ausgeführt wird zu stoppen. Dies scheint das Profiling und das auto_increment zurückzusetzen! – Bee157

2

Profilinformationen werden unter information_schema.profiling temporären Tabelle gespeichert, wie verwiesen in http://dev.mysql.com/doc/refman/5.0/en/profiling-table.html

Unter einem Datenbankbenutzer, die die erforderliche Zugriffsebene hat Sie die dort gespeicherten Informationen verkürzen können, wenn der Motor es erlaubt;

TRUNCATE TABLE information_schema.PROFILING;

Wenn nicht Sie den MySQL-Server neu starten können, wie information_schema ausschließlich im Speicher gespeichert ist, wird nach dem Dienst Neustart nicht erhalten Profilinformationen.

+0

Das macht Sinn. Aber mit einem root-Account und dem, was ich für 100% der Rechte hielt, bekomme ich folgendes: 'Zugriff verweigert für Benutzer 'root' @ 'localhost' auf Datenbank 'information_schema''. Weißt du, was diese Erlaubnis kontrollieren würde? – Ray

+0

Sie können mysqld neu starten und die Tabellen werden neu erstellt. 'information_schema' wird ausschließlich im Speicher gespeichert und besteht aus Sichten. Profilinformationen werden nach einem Dienstneustart nicht beibehalten. –

+2

Ja, der Neustart hat geklappt, ist aber nicht die bevorzugte Methode - vor allem auf der Live-Maschine oder einem anderen Entwickler. Sind die Tabellen schreibgeschützte Tabellen im Info-Schema? – Ray