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

MySQL-Primärschlüssel-Benennungsstrategie im Zusammenhang

Als ich kürzlich die Details der Datenlebenszyklu...

Tutorial zum Ändern des Root-Passworts in MySQL 5.7

Versionsupdate, das Passwortfeld im Originalbenut...

Installieren Sie Python 3.6 unter Linux und vermeiden Sie Fallstricke

Installation von Python 3 1. Abhängige Umgebung i...

CSS Lieferadresse Parallelogramm Linienstil Beispielcode

Der Code sieht folgendermaßen aus: // Linienstil ...

Detaillierte Erläuterung der Verwendung von Object.create-Instanzen in js

1. Erstellen Sie mit der Methode Object.create() ...

Detaillierte Erklärung des MySQL-Datenbankindex

Inhaltsverzeichnis 1. Einführung in den MySQL-Ind...

Deinstallieren der MySQL-Datenbank unter Linux

Wie deinstalliere ich eine MySQL-Datenbank unter ...

So installieren Sie binäres MySQL unter Linux und knacken das MySQL-Passwort

1. Stellen Sie sicher, dass das System über die e...

Detailliertes Tutorial zur Installation von MySQL 8 in CentOS 7

Vorbereiten Umweltinformationen zu diesem Artikel...

VMware12 installiert die Desktopversion von Ubuntu19.04 (Installations-Tutorial)

1. Versuchsbeschreibung Installieren Sie in der v...

Sechs merkwürdige und nützliche Dinge über JavaScript

Inhaltsverzeichnis 1. Dekonstruktionstipps 2. Dig...