Einführung in das MySql-Cache-Abfrageprinzip sowie in die Cache-Überwachung und Indexüberwachung

Einführung in das MySql-Cache-Abfrageprinzip sowie in die Cache-Überwachung und Indexüberwachung

Abfrage-Cache

1. Funktionsprinzip des Abfrage-Cache

Bevor eine Abfrageanweisung ausgeführt wird, vergleicht MySQL die Abfrageanweisung mit den Anweisungen im Abfragecache und vergleicht sie Byte für Byte. Nur diejenigen, die vollständig konsistent sind, werden als identisch betrachtet. Im Folgenden werden diese beiden Anweisungen als unterschiedliche Abfragen betrachtet.

Wählen Sie * aus tb1_name

Wählen Sie * aus tb1_name

1) Abfragen für unterschiedliche Datenbanken, unterschiedliche Protokollversionen oder unterschiedliche Zeichensätze werden als unterschiedliche Abfragen behandelt und separat zwischengespeichert.

2) Die folgenden beiden Abfragetypen werden nicht zwischengespeichert

a. Vorbereitete Erklärungen

b. Unterabfrage einer verschachtelten Abfrage

3) Bevor Abfrageergebnisse aus dem Abfragecache abgerufen werden, prüft MySQL, ob der Benutzer über Abfrageberechtigungen für alle an der Abfrage beteiligten Datenbanken und Tabellen verfügt. Wenn nicht, werden die zwischengespeicherten Abfrageergebnisse nicht verwendet.

4) Wenn ein Abfrageergebnis von der Cache-Abfrage zurückgegeben wird, erhöht der Server die Statusvariable Qcache_hits anstelle von Com_select

5) Wenn sich die Tabelle ändert, werden alle zwischengespeicherten Abfragen, die diese Tabelle verwenden, ungültig und aus dem Cache entfernt. Tabellen können durch verschiedene Arten von Anweisungen geändert werden, etwa INSERT, UPDATE, DELETE, TRUNCATE TABLE, ALTER TABLE, DROP TABLE oder DROP DATABASE.

Referenzlinks:

http://dev.mysql.com/doc/refman/4.1/en/query-cache-operation.html

2. Prüfen Sie, ob die Cache-Abfrage aktiviert ist

VARIABLEN WIE „have_query_cache“ ANZEIGEN;

MySql-Cache-Abfrageprinzip und Cache-Überwachung und Indexüberwachung

3. Entfernen Sie alle Abfrage-Caches aus dem Abfrage-Cache

Abfrage-Cache zurücksetzen;

4. Überwachung der Leistung des Abfragecaches

STATUS ANZEIGEN WIE 'Qcache%'

MySql-Cache-Abfrageprinzip und Cache-Überwachung und Indexüberwachung

Ausgabebeschreibung:

Qcache_free_blocks: freie Speicherblöcke im Abfragecache

Qcache_free_memory: Die Menge an freiem Speicher im Abfragecache

Qcache_hits: Anzahl der Abfrage-Cache-Treffer

Qcache_inserts: Die Anzahl der Abfragen, die dem Abfragecache hinzugefügt wurden (keine Lesevorgänge, die nicht zwischengespeichert wurden, sondern Lesevorgänge, die für ungültig erklärt wurden)

Qcache_lowmen_prunes: Die Anzahl der Abfragen, die aufgrund von zu wenig Speicher aus dem Abfragecache entfernt wurden.

Qcache_not_chached: Die Anzahl der nicht zwischengespeicherten Abfragen (aufgrund der Einstellung query_cache_type nicht zwischengespeichert)

Qcache_queries_in_cache: Die Anzahl der im Cache-Abfragespeicher registrierten Abfragen

Qcache_total_blocks: Die Gesamtzahl der Speicherblöcke im Abfragecache

Gesamtzahl der SELECT-Abfragen:

Com_select+Qcache_hits+ Anzahl der Abfragen mit vom Parser gefundenen Fehlern

Unter diesen stellt Com_select die Anzahl der Cache-Fehler und Qcache_hits die Anzahl der Cache-Treffer dar.

Com_select Berechnungsformel:

Qcache_inserts+Qcache_not_cached+Anzahl der Fehler bei der Berechtigungsprüfung (Abfragen mit Fehlern, die bei der Prüfung der Spaltenberechtigungen gefunden wurden)

Indexüberwachung

STATUS ANZEIGEN WIE „handler_read%“;

MySql-Cache-Abfrageprinzip und Cache-Überwachung und Indexüberwachung

Ausgabebeschreibung:

Handler_zuerst_lesen

Die Häufigkeit, mit der der erste Eintrag in einem Index gelesen wurde. Wenn dieser Wert hoch ist, deutet dies darauf hin, dass der Server viele vollständige Index-Scans durchführt; beispielsweise SELECT col1 FROM foo, vorausgesetzt, dass col1 indiziert ist

Die Häufigkeit, mit der der erste Eintrag in einem Index gelesen wird. Wenn dieser Wert hoch ist, bedeutet dies, dass der Server viele vollständige Indexscans durchführt, z. B. SELECT col1 FROM foo, vorausgesetzt, dass col1 indiziert ist.

Handler_Schlüssel lesen

Die Anzahl der Anfragen zum Lesen einer Zeile basierend auf einem Schlüssel. Ein hoher Wert ist ein gutes Zeichen dafür, dass Ihre Tabellen für Ihre Abfragen richtig indiziert sind.

Die Anzahl der Anforderungen zum Lesen einer Zeile basierend auf einem Schlüssel. Wenn dieser Wert hoch ist, ist dies ein gutes Zeichen dafür, dass die Tabelle für die ausgeführten Anforderungen entsprechend indiziert ist.

Handler_weiterlesen

Die Anzahl der Anforderungen zum Lesen der nächsten Zeile in Schlüsselreihenfolge. Dieser Wert wird erhöht, wenn Sie eine Indexspalte mit einer Bereichseinschränkung abfragen oder einen Indexscan durchführen.

Die Anzahl der Anforderungen zum Lesen der nächsten Zeile gemäß der Schlüsselreihenfolge. Wenn Sie eine Indexspalte mit einer Reihe von Einschränkungen abfragen oder einen Indexscan durchführen, erhöht sich dieser Wert.

Handler_read_prev

Die Anzahl der Anfragen zum Lesen der vorherigen Zeile in Schlüsselreihenfolge. Diese Lesemethode wird hauptsächlich zur Optimierung von ORDER BY ... DESC verwendet.

Die Anzahl der Anfragen zum Lesen der vorherigen Zeile in der Reihenfolge der Schlüssel. Diese Lesemethode wird hauptsächlich zur Optimierung von ORDER BY ... DESC verwendet.

Handler_read_rnd

Die Anzahl der Anfragen zum Lesen einer Zeile basierend auf einer festen Position. Dieser Wert ist hoch, wenn Sie viele Abfragen durchführen, bei denen das Ergebnis sortiert werden muss. Sie haben wahrscheinlich viele Abfragen, bei denen MySQL ganze Tabellen scannen muss, oder Sie haben Verknüpfungen, bei denen die Schlüssel nicht richtig verwendet werden.

Die Anzahl der Anforderungen zum Lesen einer Zeile an einer festen Position. Ein hoher Wert zeigt an, dass viele Abfragen ausgeführt werden, die eine Sortierung der Ergebnismengen erfordern. Möglicherweise führen Sie viele Abfragen aus, die vollständige Tabellenscans erfordern, oder Verknüpfungen, bei denen nicht die entsprechenden Schlüssel verwendet werden.

Handler_read_rnd_next

Die Anzahl der Anfragen zum Lesen der nächsten Zeile in der Datendatei. Dieser Wert ist hoch, wenn Sie viele Tabellenscans durchführen. Im Allgemeinen deutet dies darauf hin, dass Ihre Tabellen nicht richtig indiziert sind oder dass Ihre Abfragen nicht so geschrieben sind, dass sie die vorhandenen Indizes nutzen.

Die Anzahl der Anforderungen zum Lesen der nächsten Zeile in der Datendatei. Ein hoher Wert zeigt an, dass viele vollständige Tabellenscans durchgeführt werden. Dies weist normalerweise darauf hin, dass die Tabelle nicht die richtigen Indizes verwendet oder dass die Abfrageanforderung die vorhandenen Indizes nicht nutzt.

Referenzlinks:

http://dev.mysql.com/doc/refman/5.7/en/dynindex-statvar.html#statvar-index-H

Referenzlinks:

http://dev.mysql.com/doc/refman/4.1/en/server-status-variables.html

http://dev.mysql.com/doc/refman/4.1/en/query-cache-status-and-maintenance.html

Dies ist das Ende dieses Artikels über die Prinzipien der MySql-Cache-Abfrage und die Einführung in die Cache-Überwachung und Indexüberwachung. Weitere relevante Inhalte zur MySql-Cache-Abfrage finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • MySQL-Serie 9 MySQL-Abfrage-Cache und -Index
  • Eine kurze Diskussion über verschiedene Situationen, in denen das Hinzufügen von Indizes zu MySQL nicht wirksam wird
  • Regeln für die Verwendung gemeinsamer MySQL-Indizes
  • MySQL-Sortierung mittels Index-Scan
  • Was ist ein MySQL-Index? Fragen Sie, wenn Sie es nicht verstehen

<<:  Schritte für den Exit-Fehlercode des Docker-Containers

>>:  Beispielcode zur Implementierung des Neuner-Raster-Layouts dynamischer Bilder mit CSS

Artikel empfehlen

Der Unterschied und die Verwendung von LocalStorage und SessionStorage in Vue

Inhaltsverzeichnis Was ist LocalStorage Was ist S...

Details zur Überwachung von DOM-Elementen durch MutationObServer in JavaScript

1. Grundlegende Verwendung Es kann über den Mutat...

Linux-Systemaufrufe für Betriebsdateien

Inhaltsverzeichnis 1. Öffnen Sie die Datei Parame...

So installieren Sie Nginx in CentOS7

Installieren Sie die erforderliche Umgebung 1. gc...

So zeigen Sie JSON-Daten in HTML an

Hintergrund: Manchmal müssen wir JSON-Daten direk...

Anweisungen zur Verwendung von JSON-Operationsfunktionen in Mysql5.7

Vorwort JSON ist ein leichtes Datenaustauschforma...

So schreiben Sie DROP TABLE in verschiedene Datenbanken

So schreiben Sie DROP TABLE in verschiedene Daten...

Installationstutorial für MySQL 5.7 unter CentOS 7

1. Laden Sie das offizielle MySQL Yum Repository ...

Beispielcode zur Implementierung von Dreiecken und Pfeilen durch CSS-Rahmen

1. CSS-Boxmodell Die Box beinhaltet: Rand, Rahmen...

Ein einfaches Beispiel zur Implementierung einer Fuzzy-Abfrage in Vue

Vorwort Die sogenannte Fuzzy-Abfrage dient dazu, ...