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

Vergleichstabelle für HTML-Sondersymbole auf Webseiten

Sondersymbole Benannte Entitäten Dezimalkodierung...

Detaillierte Erklärung des Cocoscreater-Prefabs

Inhaltsverzeichnis Fertighaus So erstellen Sie ei...

Beispieldemonstration der Vuex-Modularisierung und Namespaces

1. Zweck: Machen Sie den Code leichter wartbar un...

Vorschau auf die neuen Funktionen von XHTML 2.0

<br />Bevor Browser die nächste Generation v...

Vue implementiert eine einfache Notizblockfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Lassen Sie uns über Destrukturierung in JS ES6 sprechen

Überblick es6 fügt eine neue Möglichkeit hinzu, b...

Detaillierte Erklärung der KeepAlive-Verwendung in der Vue-Frontend-Entwicklung

Inhaltsverzeichnis Vorwort Keep-Avlive-Hook-Funkt...

Vue Element UI-Komponente für benutzerdefinierte Beschreibungsliste

In diesem Artikelbeispiel wird der spezifische Co...

JavaScript zur Implementierung eines einfachen Web-Rechners

Hintergrund Da ich einem neuen Projektteam zugewi...

JavaScript imitiert die Spezialeffekte der Jingdong-Lupe

In diesem Artikel wird der spezifische Code von J...

Gestaltung der Bildvorschau auf der Inhaltswebseite

<br />Ich habe bereits zwei Artikel geschrie...

Beispielcode zum Hervorheben von Suchbegriffen im WeChat-Miniprogramm

1. Einleitung Wenn Sie im Projekt auf eine Anford...

MySQL extrahiert zufällig eine bestimmte Anzahl von Datensätzen

Früher habe ich zur Handhabung dieser Art von Nut...

Funktionen in TypeScript

Inhaltsverzeichnis 1. Funktionsdefinition 1.1 Fun...