MySQL query_cache_type-Parameter und Verwendungsdetails

MySQL query_cache_type-Parameter und Verwendungsdetails

Der Zweck der Einrichtung eines MySQL-Abfragecaches besteht darin:

Zwischenspeichern Sie die Abfrageergebnisse, damit Sie sie bei der nächsten Ausführung derselben Abfrage direkt aus dem Ergebnissatz abrufen können. Dies ist viel schneller, als erneut zu suchen.

Das Endergebnis der Abfrage-Zwischenspeicherung ist, dass es nach hinten losgeht:

Es gibt zwei objektive Gründe, warum der Abfragecache die Leistung nicht verbessert:

1. Verwenden Sie den Hashwert der SQL-Anweisung als Schlüssel und den Ergebnissatz der SQL-Anweisung als Wert. Dies führt zu Problemen wie „select user from mysql.user“ und „SELECT user FROM mysql.user“.

Diese beiden werden als unterschiedliche SQL-Anweisungen behandelt. Selbst wenn der Ergebnissatz zu diesem Zeitpunkt bereits vorhanden ist, wird er nicht verwendet.

2. Wenn die untergeordnete Tabelle, auf der die Abfrage basiert, geändert wird, wird der Abfragecache, der sich auf diese Tabelle bezieht, ungültig. Wenn das System einen hohen Grad an Parallelität aufweist, ist dieser Aufwand beträchtlich; der Vorgang zum Ungültigmachen des Ergebnissatzes erfordert ebenfalls Parallelität.

Zur Zugangskontrolle wird es auch Schlösser geben. Bei einer großen Parallelität tritt ein Warten auf die Abfrage-Cache-Sperre auf.

3. Die Nutzung hängt vom Geschäftsmodell ab.

So konfigurieren Sie den Abfrage-Cache:

Die Systemvariable query_cache_type steuert, ob die Abfrage-Cache-Funktion aktiviert oder deaktiviert ist.

Wenn query_cache_type=0 ist, bedeutet dies geschlossen, 1 bedeutet offen und 2 bedeutet nur Caching, wenn SQL_CACHE in der Auswahl explizit angegeben ist.

Die Einstellung dieses Parameters ist etwas seltsam. 1. Wenn der Abfragecache vorher geschlossen wird, aber @@global.query_cache_type=1 gesetzt ist, wird ein Fehler gemeldet

FEHLER 1651 (HY000): Der Abfragecache ist deaktiviert. Starten Sie den Server mit query_cache_type=1 neu, um ihn zu aktivieren.

2. Wenn es zuvor geöffnet war und Sie versuchen, es zu schließen, ist die Schließung unvollständig und die Abfrage versucht weiterhin, den Cache zu finden.

Die beste Möglichkeit, den Abfragecache zu deaktivieren, besteht darin, in my.cnf query_cache_type=0 festzulegen und dann MySQL neu zu starten.

Cache-bezogene Systemvariablen abfragen:

have_query_cache gibt an, ob diese MySQL-Version den Abfrage-Cache unterstützt.

query_cache_limit gibt den Maximalwert an, der zum Zwischenspeichern eines einzelnen Ergebnissatzes zulässig ist.

query_cache_min_res_unit Der Mindestspeicher, den jeder zwischengespeicherte Ergebnissatz belegen soll.

query_cache_size Die für den Abfrage-Cache verwendete Speichergröße.

So überwachen Sie die Trefferquote des Abfragecaches:

Qcache_free_memory Die aktuell verbleibende Speicherplatzgröße des Abfragecaches.

Qcache_hits Die Anzahl der Abfrage-Cache-Treffer.

Qcache_inserts Die Anzahl der Abfrage-Cache-Einfügungen.

Das heißt, die Cache-Trefferquote beträgt Qcache_hits/(Qcache_hits+Qcache_inserts).

Im Allgemeinen ist es nicht möglich, dies allein einzustellen. Sie müssen es kombinieren. Es wird empfohlen, den folgenden Artikel zu lesen

Das könnte Sie auch interessieren:
  • Grafische Erklärung des MySQL-Abfragecaches
  • Beschreibung des MySQL-Optimierungsparameters query_cache_limit
  • Gründe, warum MySQL den Abfrage-Cache abgebrochen hat
  • Startmethode und Parameterdetails für MySQL-Cache (query_cache_size)
  • Missverständnisse über MySQL query_cache
  • Analyse des MySQL Query Cache-Prinzips

<<:  Lösung für die hohe CPU-Auslastung des Tomcat-Prozesses

>>:  Fallstudie zur Implementierung eines jQuery Ajax-Chatbots

Artikel empfehlen

So verwenden Sie den Linux-Befehl „more“ in allgemeinen Linux-Befehlen

more ist eines unserer am häufigsten verwendeten ...

Warum sollten MySQL-Felder NOT NULL verwenden?

Ich habe vor Kurzem in einer neuen Firma angefang...

Mehrere Möglichkeiten zum Hinzufügen von Zeitstempeln in MySQL-Tabellen

Szenario: Die Daten in einer Tabelle müssen mithi...

So fixieren Sie Inhalte beim Scrollen einer HTML-Seite an einer festen Position

In diesem Artikel wird hauptsächlich erläutert, w...

Ursachen und Lösungen für den MySQL-Fehler „zu viele Verbindungen“

Inhaltsverzeichnis Kurzzusammenfassung Heute Mitt...

Eine kurze Diskussion über den Vater-Sohn-Werttransfer in Vue3

Inhaltsverzeichnis Vom Vater zum Sohn: 1. Übergeb...

MySQL-Deduplizierungsmethoden

MySQL-Deduplizierungsmethoden 【Anfänger】 Es gibt ...

So verwenden Sie Elemente in React-Projekten

Dies ist mein erstes Mal, dass ich das Element-Fr...

Standardzusammenfassung zur Analyse der Leistung einer SQL-Anweisung

In diesem Artikel wird die Verwendung von „Explai...

Vorteile von MySQL-Abdeckungsindizes

Ein allgemeiner Vorschlag besteht darin, Indizes ...