404 Stimmen

MySQL - Zwang zur Nichtverwendung des Cache zum Testen der Abfragegeschwindigkeit

Ich teste gerade die Geschwindigkeit einiger Abfragen in MySQL. Die Datenbank speichert diese Abfragen zwischen, was es mir erschwert, beim Testen der Geschwindigkeit dieser Abfragen zuverlässige Ergebnisse zu erhalten.

Gibt es eine Möglichkeit, die Zwischenspeicherung für eine Abfrage zu deaktivieren?

System: MySQL 4 auf Linux Webhosting, ich habe Zugang zu PHPMyAdmin.

Gracias

21voto

wbharding Punkte 3173

Ein Problem mit der

SELECT SQL_NO_CACHE * FROM TABLE

Methode ist, dass sie nur zu verhindern scheint, dass das Ergebnis Ihrer Abfrage zwischengespeichert wird. Wenn Sie jedoch eine Datenbank abfragen, die aktiv mit der Abfrage, die Sie testen möchten, verwendet wird, können andere Clients Ihre Abfrage zwischenspeichern, was Ihre Ergebnisse beeinträchtigt. Ich suche weiter nach Möglichkeiten, dies zu umgehen, und werde diesen Beitrag bearbeiten, wenn ich eine gefunden habe.

15voto

Sergio Costa Punkte 421

Ich würde das Folgende verwenden:

SHOW VARIABLES LIKE 'query_cache_type';
SET SESSION query_cache_type = OFF;
SHOW VARIABLES LIKE 'query_cache_type';

7voto

newtover Punkte 29616

Die Verwendung einer benutzerdefinierten Variablen in einer Abfrage führt dazu, dass die Abfrageresultate nicht zwischengespeichert werden können. Ich fand dies einen viel besseren Indikator als die Verwendung von SQL_NO_CACHE . Sie sollten die Variable jedoch an einer Stelle platzieren, an der die Einstellung der Variable die Leistung nicht ernsthaft beeinträchtigt:

SELECT t.*
FROM thetable t, (SELECT @a:=NULL) as init;

4voto

Ian Punkte 13261

Einige der Antworten sind zwar gut, aber es gibt einen großen Vorbehalt.

Die Mysql-Abfragen können zwar am Caching gehindert werden, aber das verhindert nicht, dass die zugrundeliegende O.S. die Festplattenzugriffe im Speicher zwischenspeichert. Dies kann eine erhebliche Verlangsamung für einige Abfragen sein, insbesondere wenn sie Daten von rotierenden Festplatten abrufen müssen.

Während es also gut ist, die oben genannten Methoden zu verwenden, würde ich auch versuchen, jedes Mal mit einem anderen Datensatz/Bereich zu testen, der wahrscheinlich nicht von der Festplatte in den Festplatten-/Speicher-Cache gezogen wurde.

2voto

Jinesh Punkte 771

Wenn Sie den Abfrage-Cache deaktivieren möchten, setzen Sie die 'query_cache_size' in Ihrer mysql-Konfigurationsdatei auf 0. Wenn er auf 0 gesetzt ist, wird mysql den Abfrage-Cache nicht verwenden.

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