Heim  >  Artikel  >  Datenbank  >  Was ist das Prinzip des MySQL-Datenbankabfrage-Cachings?

Was ist das Prinzip des MySQL-Datenbankabfrage-Cachings?

coldplay.xixi
coldplay.xixiOriginal
2020-10-26 11:58:113644Durchsuche

Das Prinzip des Zwischenspeicherns von MySQL-Datenbankabfragen ist: 1. Zwischenspeichern Sie die Ergebnismenge und die SQL-Anweisung der SELECT-Operation. Der Schlüssel ist SQL und der Wert ist die Abfrageergebnismenge. 2. Wenn eine neue SELECT-Anweisung eintrifft, verwenden Sie diese sql als Schlüssel zur Abfrage im Cache. Wenn eine Übereinstimmung vorliegt, wird die zwischengespeicherte Ergebnismenge zurückgegeben.

Was ist das Prinzip des MySQL-Datenbankabfrage-Cachings?

Das Prinzip des MySQL-Datenbankabfragecaches ist:

Übersicht

Der Abfragecache (kurz QC) speichert SELECT-Anweisungen und die von ihnen generierten Datenergebnisse. Da ich nichts zu tun habe, möchte ich dieses Thema zusammenfassen und ein Memo erstellen!

Super detaillierte Zusammenfassung des MySQL-Datenbank-Abfragecaches, es lohnt sich zu sammeln

Was ist das Prinzip des MySQL-Datenbankabfrage-Cachings?

Arbeitsprinzip

  • Zwischenspeichern Sie die Ergebnismenge und die SQL-Anweisung der SELECT-Operation, der Schlüssel ist SQL, der Wert ist die Abfrageergebnismenge ;

  • Wenn eine neue SELECT-Anweisung eintrifft, verwenden Sie diese SQL als Schlüssel zum Abfragen des Caches. Wenn sie übereinstimmt, geben Sie die zwischengespeicherte Ergebnismenge zurück.

  • Übereinstimmungskriterien: Ob sie genau mit der zwischengespeicherten SQL übereinstimmt Bei der Anweisung wird die Groß-/Kleinschreibung beachtet, und das Leerzeichen in der Mitte kann einfach so verstanden werden, dass der Schlüssel SQL ist und der Wert das SQL-Abfrageergebnis ist. ), zum Beispiel:

  • Alter auswählen vom Benutzer und Alter vom Benutzer auswählen stimmt nicht überein, weil die Groß-/Kleinschreibung unterschiedlich ist;

  • Alter auswählen vom Benutzer und Alter vom Benutzer auswählen stimmt nicht überein, weil die Leerzeichen unterschiedlich sind;

  • Die Leerzeichen auf beiden Seiten von SQL können ignoriert werden, und es kann davon ausgegangen werden, dass der Schlüssel geändert wurde. Führen Sie nach dem Trimmvorgang einen Gleichheitsvergleich durch.

MySQL-Einstellungsparameter anzeigen

Ausführen

Variablen wie „%query_cache%“ anzeigen;

Was ist das Prinzip des MySQL-Datenbankabfrage-Cachings?

Sie können die relevanten Parameter sehen:

  • query_cache_type: 0-Do Abfragecache nicht aktivieren; 1 – Aktivieren, 2 – Aktivieren, der Standardwert ist 0; 128 MB;

  • query_cache_limit: Die maximale Größe eines einzelnen Abfragedatensatzes, der im Cache-Bereich zwischengespeichert werden kann, beträgt 1 MB.

  • query_cache_type ist 1. Die Abfrageanweisungen und Datensatzsätze des Clients können zwischengespeichert werden, wenn SQL_NO_CACHE zum SQL hinzugefügt wird.

  • query_cache_type ist 2, solange der Parameter: SQL_CACHE zum SQL hinzugefügt wird und die Anforderungen des Abfragecachings erfüllt , können die Abfrageanweisung und der Datensatz des Clients zwischengespeichert werden.

  • Cache-Nutzung anzeigen

Status wie „%Qcache%%“ anzeigen;

Sie können die relevanten Parameter sehen:

Was ist das Prinzip des MySQL-Datenbankabfrage-Cachings?

Qcache_hits: Anzahl der Cache-Treffer;

  • Q Cache_Insert s : Cache Fügen Sie zur Anzahl der Einfügungen 1 für jeden Cache hinzu.

  • Aktivieren Sie den Abfragecache.

Setzen Sie die Option query_cache_type = 1 und setzen Sie query_cache_size = 67108864

Hinweis: Der Wert von query_cache_size ist auf 100 MB festgelegt. Das war’s. In MySQL wird der Abfragecache durch eine globale Sperre gesteuert. Jedes Mal, wenn der Speicherblock des Abfragecaches aktualisiert wird, muss er gesperrt werden.

Abfrage-Caching deaktivieren

Setzen Sie die Option query_cache_type = 0 und setzen Sie query_cache_size = 0.

Anwendbare Szenarien

Es wird in Szenarien verwendet, in denen dieselbe Aussage häufig übermittelt wird und sich die Tabellendaten nicht sehr häufig ändern, z. B. bei einigen statischen Seiten oder einer bestimmten Information auf der Seite, die sich nicht häufig ändert .

Da der Abfragecache die neuesten Datenergebnisse zwischenspeichern muss, führen alle Änderungen an den Tabellendaten (Einfügen, Aktualisieren, Löschen oder andere Vorgänge, die zu Datenänderungen führen können) dazu, dass der Abfragecache aktualisiert wird. Daher ist es in einem Szenario, in dem die Aktualisierungshäufigkeit sehr niedrig und die Häufigkeit schreibgeschützter Abfragen sehr hoch ist, vorteilhafter, den Abfragecache zu aktivieren.

Nicht anwendbares Szenario

Der Abfrage-Cache erfordert unbedingt, dass die beiden SQL-Anfragen genau gleich sein müssen, einschließlich SQL-Anweisungen, verbundener Datenbanken, Protokollversionen, Zeichensätzen und anderer Faktoren, die ihn beeinflussen. Im Folgenden sind mehrere Szenarien aufgeführt, in denen das Abfrage-Caching nicht anwendbar ist:

Unterabfrage;

    SQL, das in Prozeduren, Funktionen, Triggern, Ereignissen aufgerufen wird oder auf diese Ergebnisse verweist;
  • Die Abfrage umfasst einige spezielle Funktionen, wie z als: BENCHMARK(), CURDATE(), CURRENT_TIME(), CURRENT_TIMESTAMP(), NOW(), SLEEP(), CONNECTION_ID(), CURRENT_DATE(), CURRENT_USER(), PASSWORD(), RAND(), UUID(), ENCRYPT(), LAST_INSERT_ID() usw.;
  • Die Abfrage umfasst MySQL, Information_Schema oder Performance_Schema.

  • Abfragen ähnlich wie SELECT...LOCK IN SHARE MODE, SELECT...FOR UPDATE, SELECT..INTO OUTFILE/DUMPFILE, SELECT * FROM... WHERE autoincrement_col IS NULL;

  • SELECT Ausführungsplan verwendet temporäre Tabellen;

  • Abfragen, die auf keine Tabelle verweisen, wie z. B. SELECT 1+2;

  • Das Schlüsselwort SQL_NO_CACHE ist in der SELECT-Anweisung vorhanden;

  • Weitere verwandte kostenlose Lernempfehlungen:
  • MySQL-Tutorial
(Video)

Das obige ist der detaillierte Inhalt vonWas ist das Prinzip des MySQL-Datenbankabfrage-Cachings?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn