
Angenommen, der Speicher reicht aus,
wie bestimmt MySQL, ob aus dem Cache abgerufen oder eine erneute Abfrage durchgeführt werden soll?
Antwort1
Soweit ich weiß, läuft der Cache von MySQL automatisch ab, wenn sich die Tabelle ändert (Einfügungen, Aktualisierungen, Löschungen usw.).
MySQL speichert es normalerweise sofort zwischen, basierend auf dem Query_Cache_Limit und der Größe. Das standardmäßige Query_Cache_Limit beträgt 1 MB. Wenn die einzelne Abfrage also größer wird, wird sie nicht zwischengespeichert, sofern Sie es nicht ändern.
Sie müssen sicherstellen, dass Ihre Abfrage ebenfalls gleich ist, da Abfragen mit Groß-/Kleinschreibung berücksichtigt werden.
Abgesehen davon können Sie den folgenden Befehl zur Überwachung verwenden:
SHOW STATUS LIKE '%qcache%';
Erstellen Sie beispielsweise eine Tabelle mit einigen Einträgen und führen Sie Folgendes aus:
SELECT id,name FROM my_table WHERE id > '2'; SHOW STATUS LIKE '%qcache%';
Sie werden feststellen, dass sich die Anzahl der zwischengespeicherten Abfragen um 1 erhöht hat. Führen Sie nun dieselbe Auswahl erneut aus und Sie werden sehen, dass MySQL den Cache bereits verwendet und das Ergebnis viel schneller vorliegt.
WEITERE INFORMATIONEN
Zuerst müssen Sie sicherstellen, dass Sie query-cache-type = 1
je nach Betriebssystem/INSTALLATION Ihre my.cnf oder my.ini haben.
Von MySQL aus können Sie den folgenden Befehl ausführen, um den Status zu überprüfen:
SHOW VARIABLES LIKE '%query_cache%';
Beim Auflisten der Daten wird die Abfrage-Cache-Größe angezeigt. Wenn diese auf 0 gesetzt ist, bedeutet dies, dass Ihr Abfrage-Cache deaktiviert ist. Diese Variable bestimmt den für den Abfrage-Cache verwendeten Speicher in Bytes.
Fügen Sie also, wie Sie es für den Abfrage-Cache-Typ getan haben, Folgendes zu Ihrer my.cnf oder my.ini hinzu:
query-cache-size = 40M