Gründe, warum MySQL den Abfrage-Cache abgebrochen hat

Gründe, warum MySQL den Abfrage-Cache abgebrochen hat

MySQL hatte zuvor einen Abfragecache, Query Cache. Ab 8.0 wird dieser Abfragecache nicht mehr verwendet. Was ist also der Grund für den Verzicht darauf? Dieser Artikel stellt es Ihnen vor.

Der MySQL-Abfragecache ist ein Cache mit Abfrageergebnissen. Es vergleicht Abfragen, die mit SEL beginnen, mit der Hash-Tabelle und gibt bei einer Übereinstimmung das Ergebnis der vorherigen Abfrage zurück. Beim Abgleichen muss die Abfrage Byte für Byte abgeglichen werden. Beispielsweise ist SELECT * FROM t1; nicht gleich select * from t1;. Darüber hinaus können einige unsichere Abfrageergebnisse nicht zwischengespeichert werden, und jede Änderung an der Tabelle macht alle Caches dieser Tabellen ungültig. Deshalb ist das beste Szenario für die Abfrage-Zwischenspeicherung das schreibgeschützte Szenario, insbesondere bei komplexen Abfragen, die Millionen von Zeilen prüfen und nur wenige zurückgeben müssen. Wenn Ihre Abfrage eine solche Eigenschaft aufweist, wird die Aktivierung des Abfragecaches Ihre Abfrageleistung verbessern.

Mit fortschreitender Technologie und im Lauf der Zeit stellte das MySQL-Entwicklungsteam fest, dass die Aktivierung des Caching nicht viele Vorteile mit sich brachte.

Erstens hängt die Wirkung des Abfragecaches von der Cache-Trefferquote ab. Nur Abfragen, die den Cache treffen, können verbessert werden, sodass seine Leistung nicht vorhergesagt werden kann.

Zweitens besteht ein weiteres großes Problem mit dem Abfragecache darin, dass er durch einen einzelnen Mutex geschützt ist. Auf einem Server mit vielen Kernen kann eine große Anzahl von Abfragen zu zahlreichen Mutex-Konflikten führen.

Benchmarking hat ergeben, dass die meisten Workloads am besten durch die Deaktivierung des Abfragecaches (Standard für 5.6) bedient werden: query_cache_type = 0

Wenn Sie meinen, dass Sie vom Abfrage-Caching profitieren würden, testen Sie es entsprechend.

  • Je mehr Daten Sie schreiben, desto weniger Nutzen erhalten Sie
  • Je mehr Daten Sie im Pufferpool speichern, desto geringer ist Ihr Nutzen.
  • Je komplexer die Abfrage, je größer der Scanbereich, desto größer der Nutzen

Ein weiterer Grund, warum MySQL 8.0 den Abfrage-Cache abschafft, besteht darin, dass Untersuchungen zeigen, dass der Nutzen umso größer ist, je näher der Cache am Client ist. Weitere Informationen zu dieser Studie finden Sie unter https://proxysql.com/blog/scaling-with-proxysql-query-cache/.

Das folgende Bild stammt von der oben genannten URL:

Darüber hinaus wurden in MySQL 8.0 neue Tools zur Leistungseingriff hinzugefügt. Beispielsweise können Sie jetzt das Query-Rewrite-Plugin verwenden, um Optimizer-Hinweisanweisungen einzufügen, ohne die Anwendung zu ändern. Alternativ gibt es Tools von Drittanbietern wie ProxySQL, die als Zwischencache fungieren können.

Aus den oben genannten Gründen unterstützt MySQL 8.0 das Abfrage-Caching nicht mehr. Wenn Sie von 5.7 auf 8.0 aktualisieren, sollten Sie die Verwendung von Query Rewrite oder anderen Caches in Betracht ziehen.

Der vollständige Text ist vorbei.

Oben finden Sie Einzelheiten dazu, warum MySQL Query Cache abgebrochen hat. Weitere Informationen zu MySQL Query Cache finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Grafische Erklärung des MySQL-Abfragecaches
  • Beschreibung des MySQL-Optimierungsparameters query_cache_limit
  • Startmethode und Parameterdetails für MySQL-Cache (query_cache_size)
  • Missverständnisse über MySQL query_cache
  • Analyse des MySQL Query Cache-Prinzips
  • MySQL query_cache_type-Parameter und Verwendungsdetails

<<:  Detaillierte Erklärung zum Anpassen des Linux-Befehlsverlaufs

>>:  Webinterview: Benutzerdefinierte Vue-Komponenten und Aufrufmethoden

Artikel empfehlen

Detaillierte Erklärung zur Verwendung von JavaScript-Funktionen

Inhaltsverzeichnis 1. Deklarieren Sie eine Funkti...

So passen Sie die Bash-Eingabeaufforderung in Linux an

Vorwort Wie wir alle wissen, ist Bash (die Bourne...

Detaillierte Anweisungen zur Installation von MySQL8.0.19 im CentOS7.5-Tutorial

1. Einleitung Dieser Artikel enthält keine Screen...

So fragen Sie Bilder in einem privaten Register ab oder erhalten sie

Docker fragt Bilder in einem privaten Register ab...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.19 (Win10)

Detailliertes Tutorial zum Herunterladen und Inst...

Linux-Systemreparaturmodus (Einzelbenutzermodus)

Inhaltsverzeichnis Vorwort 1. Allgemeine Fehlerbe...

Bootstrap 3.0-Lernunterlagen für Anfänger

Als ersten Artikel dieser Studiennotiz beginnen w...

Zusammenfassung zum Erlernen von HTML-Tags und Grundelementen

1. Elemente und Tags in HTML <br />Ein Elem...

So stellen Sie den Node.js-Dienst mithilfe von Dockerfile bereit

Dockerfile initialisieren Angenommen, unser Proje...